Degenerate_begin_end
BeginWithoutEnd
Renders a series of 3 triangles and one quad. The middle two triangles send NV097_SET_BEGIN_END with a triangle primitive, but do not send NV097_SET_BEGIN_END with NV097_SET_BEGIN_END_OP_END when completed. The final quad is treated as a triangle by the nv2a as the previous triangle primitive was never ended.
EmptyBeginEnd
Renders 7 rows, each labeled with a primitive type. Each row draws a red triangle, a green quad, and a blue triangle, each in its own properly terminated NV097_SET_BEGIN_END block. Between each pair of shapes, an empty NV097_SET_BEGIN_END block using the row's primitive type is sent (BEGIN immediately followed by END with no vertices). Each row is expected to contain exactly the three solid shapes, with no missing, extra, or misshapen geometry.
EndWithoutBegin
Demonstrates that a degenerate END without an associated BEGIN is silently ignored by HW. Each subtest renders a red triangle, then performs an empty BEGIN(primitive), END followed by the vertices for the primitive, followed by another END in green. Finally a standard BEGIN(primitive) - vertices - END is performed in blue. The green draw is never rendered, since hardware was never told to begin the draw.