freedreno: Upload constbuf0 to a streaming resource.

This moves the CPU-side upload cost to "when the frontend changes the
constbufs" rather than "whenever we reemit any constants", and also
reduces the upload cost for all but small upload amounts.

                                   drawoverhead throughput (n=10 each, nogmem)
                                   -----------------------
no statechange:                    no difference
program statechange                25.6369% +/- 1.51681%
8 UBOs change                      2.28426% +/- 0.326176%
uniforms change (1/few uniforms)  -12.0256% +/- 0.354173%
uniforms change (1/many uniforms)  120.253% +/- 19.5583%

"uniforms" does mean cb0 here.  "few" is 5 dwords, "many" is 961 dwords.
Breakeven is at 128 dwords.  All programs have cb0 uniforms, only the last
2 explicitly update those uniforms from the client program.
Status Job ID Name Coverage
  Container
passed #2655760
aarch64 manual
arm_build

00:00:20

passed #2655761
aarch64 manual
arm_test

00:00:19

manual #2655762
mesa 1809 shell windows manual
windows_build_vs2019
manual #2655756
manual
x86_build
manual #2655759
manual
x86_build_old
manual #2655757
manual
x86_test-gl
manual #2655758
manual
x86_test-vk
 
  Meson X86 64
created #2655766
meson-clang
created #2655765
meson-classic
created #2655767
meson-clover
created #2655768
meson-clover-old-llvm
created #2655764
meson-gallium
created #2655763
meson-testing
created #2655769
meson-vulkan
 
  Scons
created #2655770
allowed to fail
scons-win64
 
  Meson Misc
passed #2655772
aarch64
meson-arm64

00:01:42

passed #2655773
aarch64
meson-arm64-build-test

00:01:47

passed #2655771
aarch64
meson-armhf

00:02:09

created #2655775
meson-i386
created #2655778
meson-mingw32-x86_64
created #2655777
kvm
meson-ppc64el
created #2655776
kvm
meson-s390x
created #2655774
mesa 1809 docker windows
meson-windows-vs2019
 
  Freedreno
failed #2655783
google-freedreno-db410c
arm64_a306_gles2

00:17:40

passed #2655784
google-freedreno-db410c
arm64_a306_gles3

00:06:55

passed #2655785
google-freedreno-db820c
arm64_a530_gles2

00:10:39

passed #2655786
google-freedreno-db820c
arm64_a530_gles3

00:16:44

passed #2655787
google-freedreno-db820c
arm64_a530_gles31

00:11:47

passed #2655779
mesa-cheza
arm64_a630_gles2

00:01:31

passed #2655781
mesa-cheza
arm64_a630_gles3

00:06:13

passed #2655780
mesa-cheza
arm64_a630_gles31

00:04:22

passed #2655782
mesa-cheza
arm64_a630_gles31_options

00:03:15

 
Name Stage Failure
failed
arm64_a306_gles2 Freedreno
+ echo DEQP RESULT: fail
DEQP RESULT: fail
+ sleep 6000
+ PATH=/builds/anholt/mesa/.gitlab-ci/bare-metal:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ google-power-down.sh D
+ set +e
+ grep -q 'DEQP RESULT: pass' artifacts/serial-output.txt
+ exit 1
ERROR: Job failed: exit code 1