freedreno: Autotune bypass vs GMEM rendering decision
authorRob Clark <robdclark@chromium.org>
Tue, 9 Mar 2021 23:50:26 +0000 (15:50 -0800)
committerMarge Bot <eric+marge@anholt.net>
Sun, 21 Mar 2021 16:01:01 +0000 (16:01 +0000)
commit5b96689fa050c08a8422716d8c54da1611c1745a
tree74bc9812452b733c37e3a720533ad735e8e9f429
parent0610c7ba841638c1109aa104ecc5c31438b422d4
freedreno: Autotune bypass vs GMEM rendering decision

In some cases, like gl_driver2, we have all the characteristics that
make our current simplistic bypass vs GMEM decision pick GMEM (ie. batch
starts with a clear, has blend enabled, has a high draw count, etc),
but each draw touches very few pixels and the per-tile state-change
overhead leaves us CP limited.  We would be better in this case picking
the bypass path.

So use feedback from # of samples-passed in previous render passes to
the same FBO to give us a bit more information to make better choices.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2798
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9535>
src/gallium/drivers/freedreno/Makefile.sources
src/gallium/drivers/freedreno/a6xx/fd6_gmem.c
src/gallium/drivers/freedreno/freedreno_autotune.c [new file with mode: 0644]
src/gallium/drivers/freedreno/freedreno_autotune.h [new file with mode: 0644]
src/gallium/drivers/freedreno/freedreno_batch.h
src/gallium/drivers/freedreno/freedreno_context.c
src/gallium/drivers/freedreno/freedreno_context.h
src/gallium/drivers/freedreno/freedreno_gmem.c
src/gallium/drivers/freedreno/meson.build