summaryrefslogtreecommitdiff
path: root/cogl/cogl/driver/gl/cogl-texture-2d-gl.c
diff options
context:
space:
mode:
authorNiels De Graef <Niels.DeGraef@barco.com>2018-11-14 12:22:02 +0100
committerNiels De Graef <niels.degraef@barco.com>2019-06-03 16:06:23 +0200
commita3fb239344b9455e94c5489be40a98ac53de5468 (patch)
tree555d1f6ce305dd2442f5b03150109121698d16d1 /cogl/cogl/driver/gl/cogl-texture-2d-gl.c
parentd3ed857ebc346727c2ce12c3fa2ecfa1bd10a37d (diff)
downloadmutter-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 'cogl/cogl/driver/gl/cogl-texture-2d-gl.c')
-rw-r--r--cogl/cogl/driver/gl/cogl-texture-2d-gl.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/cogl/cogl/driver/gl/cogl-texture-2d-gl.c b/cogl/cogl/driver/gl/cogl-texture-2d-gl.c
index e36c3523e..cc23f1161 100644
--- a/cogl/cogl/driver/gl/cogl-texture-2d-gl.c
+++ b/cogl/cogl/driver/gl/cogl-texture-2d-gl.c
@@ -209,6 +209,8 @@ allocate_from_bitmap (CoglTexture2D *tex_2d,
GLenum gl_format;
GLenum gl_type;
+ g_warning ("allocate_from_bitmap()");
+
internal_format =
_cogl_texture_determine_internal_format (tex, cogl_bitmap_get_format (bmp));
@@ -349,6 +351,8 @@ allocate_from_gl_foreign (CoglTexture2D *tex_2d,
GLint gl_compressed = GL_FALSE;
GLenum gl_int_format = 0;
+ g_warning ("allocate_from_egl_image_foreign()");
+
if (!ctx->texture_driver->allows_foreign_gl_target (ctx, GL_TEXTURE_2D))
{
_cogl_set_error (error,