Point vertex processing optimization
Instead of packing each point in a triangle primitive,
tightly pack all point vertices and write them out 3
at a time in the output primitive. This should be
roughly twice as fast. Explanation:
Currently:
Vertices: 0 0 0 1 1 1 2 2 2 ...
Processing:
1) 0 0 0 1
2) 0 (cache hit)
3) 0 (cache hit)
2) 1 (cache hit)
3) 1 (cache hit)
4) 1 (cache hit)
5) 2 2 2 3
...
-> We processed 8 vertices to get points 0 1 2 3
New way:
1) 0 1 2 3 -> We processed 4 vertices to get points 0 1 2 3
2) 4 5 6 7
Will affect these tests once vertexPipelineStoresAndAtomics
is enabled:
dEQP-VK.glsl.atomic_operations.*
Note that these tests are affected because they wrongly assume
vertices won't be processed more than once. These tests should
still get fixed.
Bug b/140294254
Change-Id: Idb21085838317db7b7a6630a18de4d7284534429
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/36349
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
Tested-by:
Alexis Hétu <sugoi@google.com>
Showing
Please
register
or
sign in
to comment