etnaviv: Add support for multiple render targets
What does this MR do and why?
This MR adds support for multiple render targets (MRT).
The GPU needs all the active (non-null) render targets in a
contiguous representation. For instance, if fb->nr_cbufs is 4 but
fb->cbufs[0] and fb->cbufs[1] are null we need to program the GPU that
fb->cbufs[2] is configured via PE_COLOR_FORMAT and friends and
fb->cbufs[3] via PE_RT_CONFIG[0] and friends.
This facts adds some more tracking and deferred state updates.
The hole series was tested on a wide range of devices with ETNA_MESA_DEBUG
set to no_ts
, no_supertile
and <empty>
.