WGF11 Streamout (WoW64)

This automated test verifies that graphics drivers/hardware D3D stream-out behavior meets Microsoft Direct3D specifications.

This topic applies to the following test jobs:

  • WGF11 Streamout

  • WGF11 Streamout (WoW64)

Test details

   
Specifications
  • Device.Graphics.AdapterRender.D3D111Core.D3D111CorePrimary
  • Device.Graphics.AdapterRender.D3D11Core.D3D11CorePrimary
  • Device.Graphics.AdapterRender.D3D101Core.D3D101CorePrimary
  • Device.Graphics.AdapterRender.D3D10Core.D3D10CorePrimary
Platforms
  • Windows 10, client editions (x64)
  • Windows Server 2016 (x64)
  • Windows 10, client editions (Arm64)
Supported Releases
  • Windows 10
  • Windows 10, version 1511
  • Windows 10, version 1607
  • Windows 10, version 1703
  • Windows 10, version 1709
  • Windows 10, version 1803
  • Windows 10, version 1809
  • Windows 10, version 1903
  • Next update to Windows 10
Expected run time (in minutes) 2
Category Compatibility
Timeout (in minutes) 120
Requires reboot false
Requires special configuration false
Type automatic

 

Additional documentation

Tests in this feature area might have additional documentation, including prerequisites, setup, and troubleshooting information, that can be found in the following topic(s):

Running the test

Before you run the test, complete the test setup as described in the test requirements: Graphic Adapter or Chipset Testing Prerequisites.

Troubleshooting

For generic troubleshooting of HLK test failures, see Troubleshooting Windows HLK Test Failures.

For troubleshooting information, see Troubleshooting Device.Graphics Testing.

All test cases return PASS or FAIL. Review the test results in the log file for specific details about failures. The test might return SKIP if it is run with a feature level that doesn't support the feature being tested. The test might return BLOCKED if there is an uncaught exception (framework catches it at the end and logs it). To review test details, review the test log from the Windows HLK Manager.

More information

The following outlines the StreamOut Conformance Test Plan:

  • General Stream Out Test Cases

    • Pass input data into the pipeline by using VB and stream out transformed data from VS or GS.

      Note

         In the GS case, consider amplification issues by emitting more than one output primitive per input primitive.

       

    • Cycle on different primitive types, buffer sizes, emit counts, vand buffer offsets.

    • Test appending SO data by making multiple Draw() calls.

    • For GS, cycle on shaders with different "maxvertexcount" properties.

      Occasionally overflow this value, making sure that only complete primitives are kept.

    • Possibly cycle on different input primitive types and output topologies.

    • Verify expected query results

      • STREAMOUTPUTSTATS

      • STREAMOVERFLOWPREDICATE

    • Test incomplete primitive writes.

    • Test winding order and leading-vertex handling.

    • Up to 227 SO vertices per SO buffer are allowed.

      Note

         Because this is such a large resource, this works for probably one or two test cases.

       

  • Simple Single-Buffer Tests

    • Cycle on several declaration scenarios:

      • Simple.

      • Leave gaps.

      • Split output registers across multiple SO elements.

      • Merge output register into a single SO element.

    • Cycle on different SO vertex sizes.

      Verify limit of 64-component SO vertices.

  • Simple Multi-Buffer Tests

    • Mix up buffer sizes/offsets so that buffers overflow at different times.

    • Cycle on several declaration scenarios:

      • Simple.

      • Skip output slot.

      • Split output registers across multiple SO elements.

      • Stream out partial register components.

      • Stream out to single buffer in non-zero slot.

  • Ping Ponging of Stream Output Buffers

    • Similar to simple single-buffer and simple multi-buffer tests with a twist:

      • Initially bind buffers A and B with a positive offset.

      • Bind buffer A using -1 offset value.

      • Draw()

      • Bind buffer B using -1 offset value.

      • Draw()

      • Repeat as needed.

    • In multiple buffer scenarios, consider optionally ping-ponging only some of the SO buffers between Draw() calls.

  • Changing SO Vertex Size Using Same Target Buffer

    • Custom test case that focuses on setting "fat" vertex strides to a single buffer, then Draw(), then sets "skinny" SO vertex stride, then Draw() again.

    • Examine STREAMOUTPUTSTATS.

    • Watch for overflow during "fat" vertex streaming and make sure that skinny vertices cannot be appended to target.

      Note

         Consider ping-ponging during this step to make sure that the overflowed state is "sticky" on the buffer.

       

  • Addressable Stream Output (D3D11)

    Test RasterizedStream and multiple vectors of data:

    • When sending a stream to the rasterizer, make sure that the final result uses the vertex data from that stream.

    • Make sure that more than one vector of data can be output from a stream under feature level 11, even when using a gs_4_x shader.

    • Test strides that aren't tightly aligned to the size of an element in a stream output buffer.

    • Verify that stream output works when the runtime determines strides based on the size calculated using the stream output declaration. The runtime does this when the stride parameters in the create call are both NULL.

  • Test feature level and query behavior:

    • When using feature levels 10 and 10.1, make sure only stream 0 can be used for stream output.

    • When using feature levels 10 and 10.1, make sure that only gs_4_x shaders can be used. If multiple buffers are used, make sure that only one vector of data can be output from stream 0 i.

    • D3D11_QUERY_SO_STATISTICS and D3D11_QUERY_SO_OVERFLOW_PREDICATE queries should return the correct data for the sum of all streams. D3D11_QUERY_SO_STATISTICS_STREAMn and D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAMn queries return the correct data for each stream. There are currently test cases for the single stream case. The following will be verified:

      • Expected number of primitives written to stream output buffers.

      • Expected size of the primitives (if they are all to be output to buffers).

      • Overflow predicate is triggered when one buffer overflows when writing to it.

      • If one buffer in a stream is filled, writes to all buffers in that stream are prevented.

      • Results of queries for undefined streams should not be affected.

Command Syntax

Command option Description

Wgf11streamout

Rusn the test. Without any options, the test enumerates devices.

-FeatureLevel:XX.X

Sets the feature level tested where XX.X is the Feature Level the test will run at: 10.0, 10.1, or 11.0.

Note

   For command line help for this test binary, type /?.

 

File List

File Location

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

 

Parameters

Parameter name Parameter description
MODIFIEDCMDLINE Additional command line arguments for test executable
LLU_NetAccessOnly LLU Name of net user
ConfigDisplayCommandLine Custom Command Line for ConfigDisplay. Default: logo
TDRArgs /get or /set