All contents of this package are shared under NDA, and should be kept confidential.
Thank you for being among the first to use the new DXGI2Preview API set. Please email besorbo@microsoft.com
with any feedback/issues.
DXGI2Preview 0.3 Release Notes - 9/4/2015
=======================================================
OS Changes:
- The OS that is being shared is "10537-150902 th2_sigma_grfx_dev". It contains updated display kernel code to
enable some of the new DXGI APIs in this release.
- Installation instructions are unchanged from the previous OS.
- In this drop, a separate dxgi.dll is still needed to be used for DXGI2Preview functionality.
SDK Changes:
- The API has breaking changes and interface UUIDs have been updated accordingly
- An API "IDXGI2PreviewDisplay::GetPowerState" has been added to determine if an HMD is already
powered on (i.e. to determine if a swap chain is already occupying the display).
- The DXGI2_PREVIEW_DISPLAY_DESC struct now contains two new fields:
AdapterLuid - can be used to determine the IDXGIAdapter the display is attached to.
EdidBaseBlock - the EDID base block (first 128 bytes) is now reported back to the application.
(the future non-preview API will expose this in a parsed/more user-friendly form).
- A DXGI_USAGE field has been added to the DXGI2_PREVIEW_SWAPCHAIN_DESC struct. It can be used
to allow UAVs to be created against the swap chain back buffers.
- Validation that the swap chain back buffer is set to R8G8B8A8_UNORM. A SRGB RTV can be created
against this format type.
HMD Installation Changes:
- None.
Known issue changes:
- Fixed: GetFrameStatistics is fully validated/working.
- Fixed: The swap chain back buffers currently do not allow a UAV to be created against them. This will be fixed in a future build.
DXGI2Preview 0.2 Release Notes - 8/31/2015
=======================================================
OS Changes:
- The OS that is being shared is "10535-150830 th2_sigma_grfx_dev". It contains updated display kernel code to
improve the functionality and stability of not extending the desktop onto the HMD/DXGI2 APIs.
- Installation instructions are unchanged from the previous OS.
- In this drop, a separate dxgi.dll is still needed to be used for DXGI2Preview functionality.
SDK Changes:
- DXGI now queries the HMD's resolution dynamically, instead of requiring it as a hard-coded value.
- The DXGI2Preview APIs have been refactored into their own header.
- WaitForVBlank is now properly functioning.
- You now must pass "-hmd" as a command-line argument to d3d11sampleapp.exe for it to create a swap chain on the HMD.
- 'TrivFlip11.exe', a second sample app, is included. It has a dependency on d3dx11_47, which is included for convenience. No arguments are needed.
HMD Installation Changes:
- The display database (under GraphicsDrivers) no longer needs to be manually cleared. After changing the HMDDevicePresent registry key, hit 'f5' to
flush your changes to registry database, then unplug and plug in the HMD.
Known issue changes:
- New: The swap chain back buffers currently do not allow a UAV to be created against them. This will be fixed in a future build.
- New: The 'refresh rate' field in the swap chain desc (from IDXGISwapChain::GetDesc) is currently not initialized. This will be fixed in a future build.
- New: GetFrameStatistics is not fully validated, but potentially works.
- Fixed: The D3D11 FS-ex issue has been fixed.
- Fixed: HMDs will now power down (will not receive a signal) when the swap chain is torn down.
DXGI2Preview 0.1 Release Notes - 8/25/2015
=======================================================
OS Installation Notes/Instructions (1):
Note: The OS that is being shared is "10530-150824 th2_sigma_grfx_dev". It is a pre-release OS that contains the
necessary kernel support for the OS to recognize HMD displays.
Note: The OS is being provided as a 'VHD'. This makes OS installation as easy as copying a file to a harddrive and
modifying the system boot configuration.
1. Copy the VHD file to C:\VHD\
2. Create a duplicate boot entry based on your current OS image by running "bcdedit /copy {current} /d HMDTest" (without quotes)
3. BCDEdit will return a GUID for the new boot entry, copy that to the clipboard.
4. Next, point the new boot entry at the VHD by running:
bcdedit /set {NEW-GUID-HERE} osdevice vhd=[c:]\vhd\<VHD file name w/ .vhd extension>
bcdedit /set {NEW-GUID-HERE} device vhd=[c:]\vhd\<VHD file name w/ .vhd extension>
5. Optionally go back to the 'classic' boot menu by running "bcdedit /set {bootmgr} displaybootmenu yes" - it is quick for booting the non-default OS.
6. Reboot the machine and select the 'HMDTest' boot option, follow installation wizard prompts.
SDK Installation Notes/Instructions (2):
Note: For this 0.1 release, the new headers are included in a modified dxg1_4.h - it can overwrite an existing dxgi1_4.h.
- In next week's release the DXGI2Preview interfaces will be broken into a separate header.
Note: A custom dxgi.dll is required to call these new APIs. They will be integrated into the OS dxgi.dll in a future release.
- For this week's release, the HMD resolution is hardcoded in DXGI - three common resolutions are provided,
please contact besorbo@microsoft.com if a different resolution is needed. This will be fixed in next week's release.
Note: See 'TrivFlip' for an example app that utilizes the APIs. It should display a 'rolling' color sequence (once the HMD is installed below).
HMD Installation Notes/Instructions (3):
Note: Currently, the OS looks at a registry key entry to determine if a monitor is an HMD or not.
- A future release will allow an INF to be used to (potentially automatically) install the monitor as an HMD without any further user action.
Note: In today's release, you need to manually mark a display as an HMD, then clear out saved configuration information. Again, this will not be
necessary in next week's release.
1. Plug in the display that you want to identify as an HMD.
2. Locate the display in Device Manager, under 'Monitors'. Double-click it and go to the 'details' tab.
3. Select the 'Driver Key' property, and note the four digits after the GUID.
4. Unplug the display.
5. Open up regedit, and navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318}\<FOUR DIGIT NUMBER>
6. In that key, create a new DWORD (32-bit) value with the name "HMDDevicePresent", and set the value to '1'.
7. Next, clear out configuration data by navigating to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers and
deleting the "Configuration" and "Connectivity" keys (folders).
8. Connect the HMD. If installed correctly, the HMD will show up in Device Manager under monitors, but the desktop will not be extended to it.
9. To verify installation, run dxgiinfo. The HMD should not show up under DXGIv1, EDS, or QDC, but should show up under "DXGI Preview"
with the DXGI2_PREVIEW_DISPLAY_FLAG_CUSTOM flag. An example 'correct' dxgiinfo output is included in package directory.
10. Finally, run 'TrivFlip' to see content being scanned out to the HMD.
Known issues:
- Creating a full-screen exclusive DX11 app on a 'normal' monitor while a 'HMD' monitor is attached
to the system will put the OS in an unusable state. This can be corrected by unplugging, then re-plugging
the 'HMD' monitor.
- After creating a swap chain on the HMD monitor, the display will remain powered on (scanning out black)
until the display is disconnected (it can be reconnected without rebooting). This issue will be fixed in next week's drop.