d3d12: Run point sprite lowering pass on multi-stream GS when safe
authorJesse Natalie <jenatali@microsoft.com>
Fri, 14 Jan 2022 21:43:15 +0000 (13:43 -0800)
committerMarge Bot <emma+marge@anholt.net>
Fri, 21 Jan 2022 23:08:26 +0000 (23:08 +0000)
commitce93f114b661d7aafe639c9e67926b61d79526ac
tree98662185cad4a5df599df9e6c1e20554a83446ea
parent2a81bd9397e4cad1e8454b4735b53626284fb7f9
d3d12: Run point sprite lowering pass on multi-stream GS when safe

In the case of a multi-stream GS that is attempting to output wide
points to stream 0, we can support this by lowering stream 0 to
triangles and then removing the other streams. This is only valid
to do if the other streams are not being written to stream output,
either if they're not present in the SO info or no buffer is bound.

Fixes the arb_gpu_shader5/arb_gpu_shader5-emitstreamvertex_nodraw
piglit test which does this.

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14624>
src/gallium/drivers/d3d12/d3d12_compiler.cpp
src/gallium/drivers/d3d12/d3d12_lower_point_sprite.c