Hi,
I've been experimenting with different software rasterizers. I was hoping to see comparable performance between SwiftShader and llvmpipe/mesa, but so far llvmpipe seems much faster.
I'm wondering if this is something specific to the application, or something wrong with how I'm building SwiftShader, or if there is some other simple explanation?
I'm testing on a Linux machine with i7-4790 CPU @ 3.6 GHz. On llvmpipe, I see ~46 FPS, while the SwiftShader backend is running at ~5 FPS. I used the default llvm backend for SwiftShader, but building with the SubZero backend gives similar performance.
I have listed steps below that should reproduce the benchmark, if you have time to investigate? Or perhaps comment on whether this is unexpected and any ideas on what might be wrong in the benchmark?
Thanks
---
1) Ensure rustc is installed via
https://rustup.rs (default stable compiler options are fine).
2) Clone WebRender:
git clone
https://github.com/servo/webrender/ cd webrender/wrench
3) Run the test case with mesa + llvmpipe:
./script/wrench_with_renderer.py llvmpipe benchmarks/text-rendering.yaml
4) Run the test case with SwiftShader:
Clone my local SwiftShader fork from
https://github.com/gw3583/swiftshader - This has one commit which has a couple of local hacks I needed.
- Or just apply
https://github.com/gw3583/swiftshader/commit/ccaf35ec7f1b7794846ed970b23cf47b28f98d50 on your master.
Build SwiftShader
cd swiftshader/build
ln -s libEGL.so libEGL.so.1
export LD_LIBRARY_PATH= <path to swiftshader build/ dir>
./script/wrench_with_renderer.py swiftshader benchmarks/text-rendering.yaml
To compare the results:
- While wrench is running, press 'p' to see the on-screen profiler with FPS counter.
- To confirm which rasterizer is in use, the GL vendor string is written to the terminal, and in the title view.