This repository contains the source for a generic test framework for validating display adapter devices, such as GPUs and USB-display dongles. It contains a plugin model for physical capture devices that can emulate monitors and receive pixel data, metadata, and other channels common to display protocols.
The goal for this project is to provide a standard for validating display adapters. The framework is designed to be as generic and extensible as possible, to enable a very wide variety of hardware devices, protocols, and tests to be plugged in.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
A test system running Windows 11 Enterprise or Pro For Workstations
You will need to install:
Note: Installing the Visual Studio 2022 "Workflows" for .Net desktop development, Universal Windows Platform development, and Desktop development with C++ will install all required individual components.
A step by step series of examples that tell you how to get a development environment running
This entire code project is meant to be executed as a series of tests using a display device and a display capture device in tandem to verify that the expected display output is received. With the solution built, there are a few steps for running our default test pass:
Generally, the command line output of the tests will indicate what the problem is and next steps. Problems can be raised as Github issues or you can contact the authors.
The MicrosoftIteIt68051 package is sourced directly from this Github repo. However, to access a feed such as this you must authenticate your nuget requests, which will require a Github account. To do this, first create an access token as described here. To maintain best practices and prevent accidentally seeing tokens checked-in, use a nuget.config file in a parent directory to your clone - or a user-wide nuget.config for this authentication. Please see the nuget documentation for more information.
A working parent nuget.config file might look something like this:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="github" value="https://nuget.pkg.github.com/microsoft/index.json" />
</packageSources>
<packageSourceCredentials>
<github>
<add key="Username" value="Spruill-1" />
<!-- Github token as described in their documentation -->
</github>
</packageSourceCredentials>
</configuration>
Please read our CONTRIBUTING.md which outlines all of our policies, procedures, and requirements for contributing to this project.
We use SemVer for versioning. For a PR to be accepted it will have to include appropriate versioning updates for the impacted components.
We maintain a ChangeLog to be updated alongside any notable changes.
David Spruill (Microsoft) - principle author, framework Katie Anderson (Microsoft) - principle author, Tanager plugin Dave Hargrove (Microsoft) - hardware design, debugging Zachary Northrup (Microsoft) - software design, CaptureCardViewer project Larissa Umulinga (Microsoft) - author, CaptureCardViewer project
Note: Please add to this list as new components/contributors are added.
Suggestions and feedback can be sent to the authors at displaycapturetools@microsoft.com
This project is licensed under the MIT license - see the LICENSE file for details