diff options
author | Niels De Graef <Niels.DeGraef@barco.com> | 2018-11-14 12:22:02 +0100 |
---|---|---|
committer | Niels De Graef <niels.degraef@barco.com> | 2019-06-03 16:06:23 +0200 |
commit | a3fb239344b9455e94c5489be40a98ac53de5468 (patch) | |
tree | 555d1f6ce305dd2442f5b03150109121698d16d1 /src/compositor/meta-shaped-texture-private.h | |
parent | d3ed857ebc346727c2ce12c3fa2ecfa1bd10a37d (diff) | |
download | mutter-a3fb239344b9455e94c5489be40a98ac53de5468.tar.gz |
WIP: wayland: add basic support for non-RGBA textureswip/nielsdg/add-yuv-support-gnome-3-32
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
Diffstat (limited to 'src/compositor/meta-shaped-texture-private.h')
-rw-r--r-- | src/compositor/meta-shaped-texture-private.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/compositor/meta-shaped-texture-private.h b/src/compositor/meta-shaped-texture-private.h index a86a2bff0..43be08127 100644 --- a/src/compositor/meta-shaped-texture-private.h +++ b/src/compositor/meta-shaped-texture-private.h @@ -32,7 +32,7 @@ ClutterActor *meta_shaped_texture_new (void); void meta_shaped_texture_set_texture (MetaShapedTexture *stex, - CoglTexture *texture); + CoglMultiPlaneTexture *texture); void meta_shaped_texture_set_is_y_inverted (MetaShapedTexture *stex, gboolean is_y_inverted); void meta_shaped_texture_set_snippet (MetaShapedTexture *stex, |