gallium: add renderonly library
authorChristian Gmeiner <christian.gmeiner@gmail.com>
Fri, 23 Dec 2016 19:33:10 +0000 (20:33 +0100)
committerEmil Velikov <emil.l.velikov@gmail.com>
Thu, 12 Jan 2017 19:27:11 +0000 (19:27 +0000)
commit848b49b288fc2fa942418d12829db2e559ad4916
tree7de7214bec98a0e275bb18399902984b8a5b9847
parent27a1c7ffbdd7d7a8fd1240413446c1172752d93b
gallium: add renderonly library

This a very lightweight library to add basic support for renderonly
GPUs. A kms gallium driver must specify how a renderonly_scanout
objects gets created. Also it must provide file handles to the used
kms device and the used gpu device.

This could look like:
struct renderonly ro = {
   .create_for_resource = renderonly_create_gpu_import_for_resource,
   .kms_fd = fd,
   .gpu_fd = open("/dev/dri/renderD128", O_RDWR | O_CLOEXEC)
};

The renderonly_scanout object exits for two reasons:
 - Do any special treatment for a scanout resource like importing the
   GPU resource into the scanout hw.
 - Make it easier for a gallium driver to detect if anything special
   needs to be done in flush_resource(..) like a resolve to linear.

A GPU gallium driver which gets used as renderonly GPU needs to be
aware of the renderonly library.

This library will likely break android support and hopefully will get
replaced with a better solution based on gbm2.

Changes from V1 -> V2:
 - reworked the lifecycle of renderonly object (suggested by Nicolai Hähnle)
 - killed the midlayer (suggested by Thierry Reding)
 - made the API more explicit regarding gpu and kms fd's
 - added some docs

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Acked-by: Emil Velikov <emil.velikov@collabora.com>
Tested-by: Alexandre Courbot <acourbot@nvidia.com>
src/gallium/Automake.inc
src/gallium/auxiliary/Makefile.am
src/gallium/auxiliary/Makefile.sources
src/gallium/auxiliary/renderonly/renderonly.c [new file with mode: 0644]
src/gallium/auxiliary/renderonly/renderonly.h [new file with mode: 0644]