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>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| BUILD.gn | Loading commit data... | |
| Blitter.cpp | Loading commit data... | |
| Blitter.hpp | Loading commit data... | |
| Clipper.cpp | Loading commit data... | |
| Clipper.hpp | Loading commit data... | |
| Color.cpp | Loading commit data... | |
| Color.hpp | Loading commit data... | |
| Config.cpp | Loading commit data... | |
| Config.hpp | Loading commit data... | |
| Context.cpp | Loading commit data... | |
| Context.hpp | Loading commit data... | |
| ETC_Decoder.cpp | Loading commit data... | |
| ETC_Decoder.hpp | Loading commit data... | |
| LRUCache.hpp | Loading commit data... | |
| Matrix.cpp | Loading commit data... | |
| Matrix.hpp | Loading commit data... | |
| Memset.hpp | Loading commit data... | |
| PixelProcessor.cpp | Loading commit data... | |
| PixelProcessor.hpp | Loading commit data... | |
| Plane.cpp | Loading commit data... | |
| Plane.hpp | Loading commit data... | |
| Point.cpp | Loading commit data... | |
| Point.hpp | Loading commit data... | |
| Polygon.hpp | Loading commit data... | |
| Primitive.hpp | Loading commit data... | |
| QuadRasterizer.cpp | Loading commit data... | |
| QuadRasterizer.hpp | Loading commit data... | |
| Rasterizer.hpp | Loading commit data... | |
| Renderer.cpp | Loading commit data... | |
| Renderer.hpp | Loading commit data... | |
| RoutineCache.hpp | Loading commit data... | |
| Sampler.hpp | Loading commit data... | |
| SetupProcessor.cpp | Loading commit data... | |
| SetupProcessor.hpp | Loading commit data... | |
| Stream.hpp | Loading commit data... | |
| Triangle.hpp | Loading commit data... | |
| Vector.cpp | Loading commit data... | |
| Vector.hpp | Loading commit data... | |
| Vertex.hpp | Loading commit data... | |
| VertexProcessor.cpp | Loading commit data... | |
| VertexProcessor.hpp | Loading commit data... |