WGF11 流输出
此自动测试验证图形驱动程序/硬件的 D3D 流输出行为是否符合 Microsoft Direct3D 规范。
本主题适用于以下测试作业:
WGF11 流输出
WGF11 流输出 (WoW64)
测试详细信息
规范 |
|
平台 |
|
支持的版本 |
|
预计运行时间(以分钟为单位) | 2 |
类别 | 兼容性 |
超时(以分钟为单位) | 120 |
需要重启 | false |
需要特殊配置 | false |
类型 | automatic |
其他文档
此功能区域中的测试可能会有其他文档,包括先决条件、设置和故障排除信息,这些内容可在以下主题中找到:
运行测试
在运行测试之前,请按照如下测试要求中所述完成测试设置:图形适配器或芯片组测试先决条件。
故障排除
有关 HLK 测试失败的常规故障排除,请参阅排查 Windows HLK 测试失败问题。
有关故障排除信息,请参阅排查 Device.Graphics 测试问题。
所有测试用例都返回“通过”或“失败”。 在日志文件中查看测试结果,获取有关失败的特定详细信息。 如果运行测试时使用了不支持正在测试的功能的功能级别,则测试可能会返回“跳过”。 如果有未捕获的异常(框架会在末尾捕获它并对它进行日志记录),则测试可能会返回“已阻止”。 要查看测试详细信息,请查看 Windows HLK 管理器中的测试日志。
更多信息
下面概述了流输出符合性测试计划:
常规流输出测试用例
使用 Visual Basic 将输入数据传递到管道,并从 Visual Studio 或 GS 流输出已转换的数据。
注意
对于 GS 案例,请通过在每个输入基元中发出多个输出基元来考虑放大问题。
在不同的基元类型、缓冲区大小、发出计数和缓冲区偏移量上循环。
通过发出多个 Draw() 调用来测试追加 SO 数据。
对于 GS,在具有不同“maxvertexcount”属性的着色器上循环。
偶尔会溢出此值,从而确保仅保留完整基元。
可能在不同的输入基元类型和输出拓扑上循环。
验证预期的查询结果
STREAMOUTPUTSTATS
STREAMOVERFLOWPREDICATE
测试不完整的基元写入。
测试缠绕顺序和前导顶点处理。
每个 SO 缓冲区最多允许 227 个 SO 顶点。
注意
由于此资源量如此之大,因此这可能适用于一个或两个测试用例。
简单的单缓冲区测试
在多个声明方案上循环:
简单。
留有间隙。
跨多个 SO 元素拆分输出寄存器。
将输出寄存器合并到单个 SO 元素。
在不同的 SO 顶点大小上循环。
验证 64 组件 SO 顶点的限制。
简单的多缓冲区测试
混合缓冲区大小/偏移量,使缓冲区在不同时间溢出。
在多个声明方案上循环:
简单。
跳过输出槽。
跨多个 SO 元素拆分输出寄存器。
流输出部分寄存器组件。
流输出到非零槽中的单个缓冲区。
对流输出缓冲区应用乒乓效应
类似于简单的单缓冲区测试和具有扭转的简单的多缓冲区测试:
最初将缓冲区 A 和 B 与正偏移量绑定。
使用 -1 偏移量值绑定缓冲区 A。
Draw()
使用 -1 偏移量值绑定缓冲区 B。
Draw()
根据需要重复操作。
在多缓冲区方案中,请考虑选择性地仅对两个 Draw() 调用之间的某些 SO 缓冲区应用乒乓效应。
使用同一个目标缓冲区更改 SO 顶点大小
此自定义测试用例侧重于将“粗”顶点步幅设置为单个缓冲区,并发出 Draw() 调用;然后设置“细”SO 顶点步幅,并再次发出 Draw() 调用。
检查 STREAMOUTPUTSTATS。
监视“粗”顶点流式传输期间是否发生溢出,并确保无法将细顶点追加到目标。
注意
考虑在此步骤中应用乒乓效应,以确保缓冲区一直处于溢出状态。
可寻址流输出 (D3D11)
测试数据的光栅化流和多个向量:
将流发送到光栅器时,请确保最终结果使用该流中的顶点数据。
确保即使使用 gs_4_x 着色器,在功能级别 11 以下也可以从流输出数据的多个向量。
测试与流输出缓冲区中元素的大小不完全一致的步幅。
验证当运行时根据使用流输出声明计算的大小确定步幅时,流输出是否正常工作。 当 create 调用中的两个步幅参数都为 NULL 时,运行时会执行此操作。
测试功能级别和查询行为:
使用功能级别 10 和 10.1 时,请确保流 0 只能用于流输出。
使用功能级别 10 和 10.1 时,请确保只能使用 gs_4_x 着色器。 如果使用多个缓冲区,请确保只能从流 0 i 输出数据的一个向量。
D3D11_QUERY_SO_STATISTICS 和 D3D11_QUERY_SO_OVERFLOW_PREDICATE 查询应返回所有流的总和的正确数据。 D3D11_QUERY_SO_STATISTICS_STREAMn 和 D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAMn 查询返回每个流的正确数据。 当前存在适用于单流案例的测试用例。 将验证以下事项:
写入到流输出缓冲区的预期基元数目。
基元的预期大小(如果基元全部输出到缓冲区)。
如果一个缓冲区在写入时溢出,将触发溢出谓词。
如果流中的一个缓冲区已满,则阻止写入到该流中的所有缓冲区。
未定义的流的查询结果不应受到影响。
命令语法
命令选项 | 说明 |
---|---|
Wgf11streamout |
运行测试。 不使用任何选项时,测试将枚举设备。 |
-FeatureLevel:XX.X |
设置所测试的功能级别,其中 XX.X 是用于运行测试的功能级别:10.0、10.1 或 11.0。 |
注意
有关此测试二进制文件的命令行帮助,请键入 /?。
文件列表
文件 | 位置 |
---|---|
Configdisplay.exe |
<[testbinroot]>\nttest\windowstest\tools\ |
D3d11_1sdklayers.dll |
<[testbinroot]>\nttest\windowstest\graphics\d3d\support\ |
D3d11ref.dll |
<[testbinroot]>\nttest\windowstest\graphics\d3d\support\ |
D3d11sdklayers.dll |
<[testbinroot]>\nttest\windowstest\graphics\d3d\support\ |
D3dcompiler_test.dll |
<[testbinroot]>\nttest\windowstest\graphics\d3d\support |
D3dx10_test.dll |
<[testbinroot]>\nttest\windowstest\graphics\d3d\support\ |
d3dx11_test.dll |
<[testbinroot]>\nttest\windowstest\graphics\d3d\support\ |
TDRWatch.exe |
<[testbinroot]>\nttest\windowstest\graphics\ |
Wgf11streamout.exe |
<[testbinroot]>\nttest\windowstest\graphics\d3d\conf |
参数
参数名称 | 参数说明 |
---|---|
MODIFIEDCMDLINE | 测试可执行文件的其他命令行参数 |
LLU_NetAccessOnly | 网络用户的 LLU 名称 |
ConfigDisplayCommandLine | ConfigDisplay 的自定义命令行。 默认值:徽标 |
TDRArgs | /get 或 /set |