vc4: Implement job shuffling
authorEric Anholt <eric@anholt.net>
Thu, 8 Sep 2016 19:56:11 +0000 (12:56 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 14 Sep 2016 05:25:41 +0000 (06:25 +0100)
commitf597ac3966405934e13a9aaa18c73211b5a40c7c
treef7f09bead790e4cdd210e1ed0ca4c4b150dbe35e
parentf473348468ae1c68e7ef8eaf29f2cc51d17fbec7
vc4: Implement job shuffling

Track rendering to each FBO independently and flush rendering only when
necessary.  This lets us avoid the overhead of storing and loading the
frame when an application momentarily switches to rendering to some other
texture in order to continue rendering the main scene.

Improves glmark -b desktop:effect=shadow:windows=4 by 27%
Improves glmark -b
    desktop:blur-radius=5:effect=blur:passes=1:separable=true:windows=4
    by 17%

While I haven't tested other apps, this should help X rendering a lot, and
I've heard GLBenchmark needed it too.
src/gallium/drivers/vc4/vc4_blit.c
src/gallium/drivers/vc4/vc4_context.c
src/gallium/drivers/vc4/vc4_context.h
src/gallium/drivers/vc4/vc4_draw.c
src/gallium/drivers/vc4/vc4_job.c
src/gallium/drivers/vc4/vc4_resource.c
src/gallium/drivers/vc4/vc4_simulator.c
src/gallium/drivers/vc4/vc4_state.c