etnaviv: SINGLE_BUFFER support on GC3000
authorWladimir J. van der Laan <laanwj@gmail.com>
Fri, 14 Apr 2017 07:44:27 +0000 (09:44 +0200)
committerChristian Gmeiner <christian.gmeiner@gmail.com>
Fri, 14 Apr 2017 22:34:13 +0000 (00:34 +0200)
commit6a8d5ab932e525f16e744b4f13c4f6a7fa636ecf
treec2dfeb758f82b9d9371dcd906f28a6652bcb49b2
parent1dcb1d49254dabd3989ad4ec5004b540683529b2
etnaviv: SINGLE_BUFFER support on GC3000

This patch adds support for the SINGLE_BUFFER feature on GC3000
GPUs, which allows rendering to a single buffer using multiple pixel
pipes.

This feature is always used when it is available, which means that
multi-tiled formats are no longer being used in that case, and all
buffers will be normal (super)tiled. This mimics the behavior of the
blob on GC3000.

- Because the same format can be used to render to and texture from,
  this avoids an extra resolve pass when rendering to texture.

- i.MX6qp includes a PRE which can scan-out directly from tiled formats,
  avoiding untiling overhead.

Signed-off-by: Wladimir J. van der Laan <laanwj@gmail.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
src/gallium/drivers/etnaviv/etnaviv_context.c
src/gallium/drivers/etnaviv/etnaviv_emit.c
src/gallium/drivers/etnaviv/etnaviv_internal.h
src/gallium/drivers/etnaviv/etnaviv_resource.c
src/gallium/drivers/etnaviv/etnaviv_rs.c
src/gallium/drivers/etnaviv/etnaviv_screen.c
src/gallium/drivers/etnaviv/etnaviv_state.c
src/gallium/drivers/etnaviv/etnaviv_surface.c