freedreno: regression in org.skia.skqp.SkQPRunner#gles_multipicturedraw_*_tiled
downstream bug, b/194357793
regressed test cases:
- CtsSkQPTestCases - org.skia.skqp.SkQPRunner#gles_multipicturedraw_rectclip_tiled
- CtsSkQPTestCases - org.skia.skqp.SkQPRunner#gles_multipicturedraw_sierpinski_tiled
- CtsSkQPTestCases - org.skia.skqp.SkQPRunner#gles_multipicturedraw_rrectclip_tiled
- CtsSkQPTestCases - org.skia.skqp.SkQPRunner#gles_multipicturedraw_invpathclip_simple
- CtsSkQPTestCases - org.skia.skqp.SkQPRunner#gles_multipicturedraw_invpathclip_tiled
Annoyingly I've not managed to reproduce this outside of android cts runner
737d4caa83a949ad38eb9f4663ec020e189886a9 is the first bad commit
commit 737d4caa83a949ad38eb9f4663ec020e189886a9
Author: Emma Anholt <emma@anholt.net>
Date: Fri Jul 2 10:51:16 2021 -0700
freedreno: Suballocate our long-lived ring objects.
On drawoverhead -test 9 (8 texture changes), this saves us 172kb of
memory. That's only ~1% of the GEM memory while the test is running, but
more importantly it saves us 29% of the gem BO allocations.
non-TC drawoverhead -test 9 (8 texture change) throughput 0.449019% +/-
0.336296% (n=100), but this gets better as we get better suballocation
density.
Note that this means that all fd_ringbuffer_new_object calls can now
return data aligned to 64 bytes, instead of 4k. We may find that we need
to increase it if some of our objects (tex consts, sampler consts, etc.)
require more alignment than that. But, this may help non-drawoverhead
perf if any of our RB objects have a cache in front of them (indirect
consts?) and we don't have most of our data in the same cache set any
more.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11697>
src/freedreno/drm/msm_pipe.c | 4 ++++
src/freedreno/drm/msm_priv.h | 4 ++++
src/freedreno/drm/msm_ringbuffer_sp.c | 21 ++++++++++++++++++---
3 files changed, 26 insertions(+), 3 deletions(-)
Unfortunately not solved by b1dbbc3d .. so I guess a lurking alignment issue?