mutter/cogl
Niels De Graef a3fb239344 WIP: wayland: add basic support for non-RGBA textures
Up until now, we didn't support sending YUV textures to the Wayland
server. This was for several reasons:

* We draw onto an RGBA framebuffer, so any other color format needs to
be converted to that color space. Since we don't want to lose a lot of
performance, this is ideally done on the GPU (using shaders).
* YUV formats can consist of several planes (for example NV12, a common
format in decoded video frames consists of a Y-plane and a subsampled
UV-plane). Mutter always assumed that any texture it got was
representable by a `CoglTexture`, which does not have this kind of
concept.

To deal with this, we introduce a new "texture": a
`CoglMultiPlaneTexture` which consists of multiple CoglTextures, each
representing a plane in the texture we got. It also provides support
for CoglSnippets which can convert the colorspace if necessary.

What changes are in this commit:
* Introduce a new CoglMultiPlaneTexture object. Right now it is not
implemented as a CoglTexture to prevent any confusion (but it is
somewhat related to CoglMetaTexture)
* Added some extra values to the CoglPixelFormat enum that deal with YUV
* Make the necessary changes in MetaWaylandBuffer, so that it knows how
to deal with incoming buffers (for example EGLImages and shm buffers)
* This also introduces some changes in MetaDmaBuf, as that is also a
different kind of buffer we can receive from wayland.

Acknowledgements
* There was a lot of prior art already done by the authors of Weston,
CoglGstVideoSink and ClutterGstSink
* My employer Barco for allowing me to work on this
2019-06-03 16:06:23 +02:00
..
cogl WIP: wayland: add basic support for non-RGBA textures 2019-06-03 16:06:23 +02:00
cogl-gles2 build: Don't use absolute paths with subdir keyword 2019-03-18 12:37:14 +00:00
cogl-pango build: Don't use absolute paths with subdir keyword 2019-03-18 12:37:14 +00:00
cogl-path cogl-path: Undeprecate framebuffer functions 2019-05-28 18:35:04 +02:00
test-fixtures Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
tests cogl: Remove CoglBool, use gboolean instead 2019-02-15 16:35:46 +01:00
.gitignore cogl-framebuffer: Remove swap_throttled config 2018-12-06 14:29:34 +00:00
cogl-config.h.meson Add meson build support 2018-11-06 18:51:44 +01:00
cogl-mutter-config.h.in cogl: Make cogl-config.h include check explicit 2018-11-06 17:17:36 +01:00
config-custom.h move everything into a cogl/ directory 2016-04-22 16:44:31 +02:00
meson.build build: Don't use absolute paths with subdir keyword 2019-03-18 12:37:14 +00:00