If a title does not use certain system features, GPU allocation for the title can be increased from 90 percent, to closer to 100 percent. This section describes how to take advantage of this extra allocation.
Game OS titles can access up to 100% of the GPU if both of the following conditions are met:
Game OS titles normally have a 91.5% GPU allocation, with NUI taking 4.5% and Extended System Reserve taking 4%. Titles can take these two allocations in certain circumstances.
Titles that do not use NUI streams based on depth and IR during gameplay can disable the NUI GPU Reserve and use that 4.5% GPU allocation during gameplay. Speech and color are still available to the title. The API for exercising this functionality is CoreApplication.DisableKinectGpuReservation Property.
Titles can only disable the NUI GPU Reserve during gameplay parts of the title. Non-gameplay parts of the title, such as menus and lobbies, are not allowed to disable the NUI GPU Reserve. This allows NUI features such as biometric sign-in and controller association to work in these menu and lobby scenarios.
The NUI GPU Reserve is independent of whether a Kinect sensor is physically connected to the console. That is, disconnecting Kinect will not automatically provide more GPU. Titles must explicitly disable the NUI GPU Reserve in order to access the reserve.
Titles using NUI streams based on depth or IR cannot disable the NUI GPU Reserve, so the two possible GPU allocations that a NUI title must support are 92.5% to 95.5% when full screen or 91.5% when in fill mode.
Because an Game OS app could elect to disable the NUI GPU Reserve, there is no guarantee that the shared app would have the available GPU processing resources to receive these Kinect streams. Refer to Xbox One ADK documentation for details of the NUI features not available to a shared app while that app is snapped.
The Xbox One system typically reserves a small, variable amount of GPU (from 0 to 3%) for system UI rendering, such as for toasts, the virtual keyboard, and message dialogs. In this mode, the system GPU usage is dependent on what it needs to render; if the system needs only 1% then the title will have access to all of the remaining GPU. Titles needs to accommodate this occasional frame-to-frame variation of up to 3%.
There is currently no notification sent to the title when the system takes the Standard System GPU Reserve.
In some situations, in response to user interaction, the system might request an Extended System Reserve mode that increases the system reservation to a fixed 4% per display frame. This mode will typically be enabled when another application is snapped next to a title. This mode can be activated or deactivated at any time, and the title must continue to run uninterrupted with full functionality across the transition. While it is in this mode, the title is encouraged to dynamically adapt its rendering workload to the more constrained GPU budget by such means as dynamically changing resolution or reducing effects quality. The title will typically be shown in fill mode (that is, scaled down to 1440x810 pixels when the TV output mode is 1080p) or otherwise obscured when this Extended System Reserve is enabled, so a small decrease in resolution or effects quality will be less likely to have a significant impact on the experience.
It is not possible for a title to disable the Extended System Reserve mode. However, it is possible for a title to request that Extended System Reserve mode always be enabled so that the title does not have to handle the complication of dynamic switches in and out of Extended System Reserve mode. This is done by setting GpuAvailability to fixed in the app manifest. The only other valid value for this element is variable.
Titles are notified through the CoreApplication::ResourceAvailabilityChanged PLM event when the mode is about to be transitioned; the title has 0.5 seconds to accommodate before the GPU scheduler change takes effect. The CoreApplication::ResourceAvailability enumeration value for the transition into Extended System Reserve usage is FullWithExtendedSystemReserve. The title has 0.5 seconds from the time the event is dispatched to return from the event handler. Blocking in this event handler for too long might result in the title being considered unresponsive and closed down.
Note that the 4% Extended System GPU Reserve encompasses all system rendering, so the title does not need to account for an additional 0 to 3% for the Standard System GPU Reserve.
PIX displays the GPU allocations in its GPU timeline.
To test use of the Extended System Reserve, snap any app.
To test the Standard System Reserve, use Stress (xbstress.exe) systemui, which is a stress test that periodically uses a variable amount of GPU until xbstress stop is called. The current version of this stress test consumes GPU resources (not exceeding 3%) every 5 or 10 seconds. This simulates a worst-case scenario for the Standard System Reserve. Typical usage scenarios (for example, system toast overlays) should be more frequent than is tested with this tool.