Dear all, since on r600 the tesselation shaders don't go through the sb-optimizer I though it might help to improve performance by applying some optimizations to the created assembly. The patches are experimental but to a point where I think some input from you could be helpful.
This patch series does the following optimizations: - pre-calculate and re-use address offsets that were always calculated on the fly - only load from LDS what is really requested (based on the source swizzle masks of the input values). - preload all used elements in cases where the shader would only partially load data in different places. At this point there are no piglit regressions, but an unrelated GOU lockup is triggered. (Dave and me are already testing patches for this). Benchmarking on BARTS with Unigine-Heaven and Tessmark x32 (with MESA_GL_VERSION_OVERRIDE=4.0) I get the following improvements: pre-opt post-opt master: fb0e9b5197 =============================================== Heaven Res: 1280x1024 Q: High Tess: Normal ----------------------------------------------- Time: 260.2 260.2 Frames: 3276 4192 FPS: 12.6 16.1 Min FPS: 4.0 4.6 Max FPS: 60.9 69.0 Score: 317.2 405.8 ----------------------------------------------- Tessmark x32 R: 1024x640 ----------------------------------------------- Points: 635 700 FPS: 10 11 A github repo inclusing these patches can be found at https://github.com/gerddie/mesa/tree/r600-tess-speedup many thanks for any comments, Gert Gert Wollny (6): r600:shader: Fix all warnings issed with "-Wall -Wextra" r600_shader: only load from LDS what is really used r600_shader.c: Add a caching structure for load tesselation data r600_shader: Move calculation of offset to do_lds_fetch_values r600_shader.c: Pre-caclculate some offsets for LDS access r600_shader.c: Preload some LDS values. src/gallium/drivers/r600/r600_shader.c | 636 ++++++++++++++++++++++++--------- 1 file changed, 476 insertions(+), 160 deletions(-) -- 2.13.6 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev