This patch adds a specific extraction method when the mesh has only
one material. This method is multi-threaded.
There is a trade-off in this patch as the ibo isn't compressed (it adds
restart indexes for hidden faces). So it depends if threading is faster
than the additional GPU buffer upload.
Subdivided cube
I used a cube subdivided 7 times, modifiers applied. that gives around 400000 faces.
The test is selecting some vertices and move them. During this test the next buffers are updated on each frame:
- vbo.pos_nor
- vbo.lnor
- vbo.edit_data
- ibo.tris
- ibo.points
System info:
| platform | Linux-5.11.0-7614-generic-x86_64-with-glibc2.33 |
| renderer | AMD SIENNA_CICHLID (DRM 3.40.0, 5.11.0-7614-generic, LLVM 11.0.1) |
| vendor | AMD |
| version | 4.6 (Core Profile) Mesa 21.0.1 |
| cpu | Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz |
| compiler | gcc version 10.3.0 |
Timing have been measured using DEBUG_TIME in draw_cache_extract_mesh.
master: rdata 8ms iter 45ms (frame 153ms)
this patch rdata 6ms iter 36ms (frame 132ms)