WGF11 流输出

此自动测试验证图形驱动程序/硬件的 D3D 流输出行为是否符合 Microsoft Direct3D 规范。

本主题适用于以下测试作业:

  • WGF11 流输出

  • WGF11 流输出 (WoW64)

测试详细信息

   
规范
  • Device.Graphics.AdapterRender.D3D111Core.D3D111CorePrimary
  • Device.Graphics.AdapterRender.D3D11Core.D3D11CorePrimary
  • Device.Graphics.AdapterRender.D3D101Core.D3D101CorePrimary
  • Device.Graphics.AdapterRender.D3D10Core.D3D10CorePrimary
平台
  • Windows 10,客户端版本 (x86)
  • Windows 10,客户端版本 (x64)
  • Windows Server 2016 (x64)
  • Windows 10,客户端版本 (Arm64)
支持的版本
  • Windows 10
  • Windows 10 版本 1511
  • Windows 10 版本 1607
  • Windows 10 版本 1703
  • Windows 10 版本 1709
  • Windows 10 版本 1803
  • Windows 10 版本 1809
  • Windows 10 版本 1903
  • Windows 10 的下一次更新
预计运行时间(以分钟为单位) 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