GNOME Bugzilla – Bug 685842
Cheese only displays white screen
Last modified: 2014-03-31 14:29:53 UTC
Cheese only presents me with a white image, and those errors on the console: (cheese:24869): Cogl-WARNING **: Failed to link GLSL program: error: linking with uncompiled shader System runs an nvidia 300M Chip, using the nouveau driver. Needeless to say, this renders the app fully useless.
CONFIRM not limited to nvidia. I have the same problem with opensuse cheese 3.6 on an ATI HP pavilion - same error message on console.
*** Bug 690918 has been marked as a duplicate of this bug. ***
I can confirm this on an Ubuntu Raring system with current master (b2b0533aef724bdde5a5dad84b6fd8873afa7c3d). I'm using intel graphics (the i915 driver) and libclutter-gst-2.0-0 package version 1.9.92-1build1. It's also listed as a known issue for the Debian package at [1]. Note: I had to apply the following patch [2] to the source, probably because of a quirk in the Ubuntu -dev packages for gstreamer plugins. [1]: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690852 [2]: diff --git a/configure.ac b/configure.ac index 54223ff..196ca22 100644 --- a/configure.ac +++ b/configure.ac @@ -65,8 +65,8 @@ GDK_PIXBUF_REQUIRED="gdk-pixbuf-2.0" LIBGNOMEDESKTOP_REQUIRED="gnome-desktop-3.0 >= 2.91.6" GSTREAMER_VERSION=0.11.0 GSTREAMER_REQUIRED="gstreamer-plugins-base-1.0 >= $GSTREAMER_VERSION gstreamer-1.0 >= $GSTREAMER_VERSION -GSTREAMER_PLUGINS_BAD_VERSION=0.11.0 -GSTREAMER_PLUGINS_BAD_REQUIRED="gstreamer-plugins-bad-1.0 >= $GSTREAMER_PLUGINS_BAD_VERSION" +GSTREAMER_PLUGINS_GOOD_VERSION=0.11.0 +GSTREAMER_PLUGINS_GOOD_REQUIRED="gstreamer-plugins-good-1.0 >= $GSTREAMER_PLUGINS_GOOD_VERSION" CAIRO_REQUIRED="cairo >= 1.10.0" PANGOCAIRO_REQUIRED="pangocairo >= 1.28.0" LIBRSVG_REQUIRED="librsvg-2.0 >= 2.32.0" @@ -109,7 +109,7 @@ PKG_CHECK_MODULES([CHEESE], $GOBJECT_REQUIRED $GDK_PIXBUF_REQUIRED $GSTREAMER_REQUIRED - $GSTREAMER_PLUGINS_BAD_REQUIRED + $GSTREAMER_PLUGINS_GOOD_REQUIRED $CAIRO_REQUIRED $PANGOCAIRO_REQUIRED $CLUTTER_REQUIRED
This is still an issue on my system. cheese:24869): Cogl-WARNING **: Failed to link GLSL program: error: linking with uncompiled shader remained unchanged (last tested with cheese 3.6.2)
having cogl (1.12.2) built with debug output, I receive this in plus: (cheese:29761): Cogl-WARNING **: Failed to compile GLSL program: src: precision mediump float; uniform sampler2D tex;void main () { vec4 color = texture2D (tex, vec2(cogl_tex_coord_in[0])); float y = 1.1640625 * (color.g - 0.0625); float u = color.b - 0.5; float v = color.a - 0.5; color.a = color.r; color.r = y + 1.59765625 * v; color.g = y - 0.390625 * u - 0.8125 * v; color.b = y + 2.015625 * u; gl_FragColor = color; gl_FragColor = gl_FragColor * cogl_color_in;} error: 0:15(1): error: syntax error, unexpected NEW_IDENTIFIER (cheese:29761): Cogl-WARNING **: Failed to link GLSL program: error: linking with uncompiled shader (cheese:29761): Cogl-WARNING **: ./cogl-pipeline-progend-glsl.c:379: GL error (1282): Invalid operation (cheese:29761): Cogl-WARNING **: ./cogl-pipeline-progend-glsl.c:394: GL error (1282): Invalid operation (cheese:29761): Cogl-WARNING **: ./cogl-pipeline-progend-glsl.c:799: GL error (1282): Invalid operation (cheese:29761): Cogl-WARNING **: ./cogl-buffer.c:142: GL error (1282): Invalid operation
From IRC: cogl 1.12.2 clutter-gst 1.9.92 were used. Very limited testing has been done with cogl 1.12, could be it (the shader seems to be missing the cogl preamble that defines cogl_tex_coord_in and cogl_color_in). will test soon.
FYI: clutter-gst 2.0,0 does not change the outcome.
Another test shows that a machine SHOWING the issue (with the nouveau) driver, upgrading to the nvidia binary blob, resolves this issue.
(In reply to comment #8) > Another test shows that a machine SHOWING the issue (with the nouveau) driver, > upgrading to the nvidia binary blob, resolves this issue. I am using the non-Free nVidia blob too, and do not see the issue. It seems that at least the nouveau and intel open drivers are showing symptoms. Are any other open drivers affected?
As comment 1 indicated, AMD chips are also affected... so likely about everything except the binary blob.
Jup, AMD Radeon HD 7340 with open driver has this issue.(Ubuntu13.04 dev branch kernel3.8.rcx 64bit)
Hi, So spending a bit a time on this gave the result that it's likely a cogl 1.12 regression. clutter-gst 2.0 works with cogl 1.10, but not with cogl 1.12. It's also only when using a GLSL shader that you get a broken video sink, arbfp programs seems to works (with 1.12). FWIW, the cogl 1.14 branch does not help either. We've (with the cogl guys) spent a bit on time on this, without actually figuring out what's wrong, but it was a Friday evening so might have missed something obvious. Either that or the bug is subtle and hiding well (for instance the GLSL shaders usage in the clutter test programs do work).
Tracked this a bit further down and I hope to have identified the cause (with workaround): - The issue comes from clutter-gst2 when it's linked against a GLES2 enabled cogl variant. Having a COGL build without GLES2 support, rebuilding clutter-gst2 against this version gives me a working cheese. Not *the* solution per se, but I think it gives some more insight as to where things go utterly wrong.
Hey, We currently have two cogl branches with some issues: * the cogl-1.14 one (targeting the GNOME 3.8 release). We fixed several issues in clutter-gst (well it's really cogl changing underneath but to be fair clutter-gst wasn't supposed to do what it was doing). Current clutter-gst master and the cogl-1.14 branch contains the fixes. * the cogl-1.12 branch: The issue there is when using the GLSL backend, cogl doesn't emit some boilerplate code and the shader fails to compile for that reason. This is not fixed yet. In your case, I believe when not compiled with GLES2 support, clutter-gst will use the arbfb shaders which don't need the glsl boilerplate. (this is something we can be sure of if you launch cheese with GST_DEBUG=cluttersink:4 there should be a message saying it's using the arbfp shaders). -- Damien
Damien, thanks for your explanation and time... > GST_DEBUG=cluttersink:4 cheese 0:00:00.266822210 24686 0x267d4d0 INFO cluttersink ./clutter-gst-video-sink.c:1174:clutter_gst_build_renderers_list: GL features: 0x00000007 0:00:01.116846522 24686 0x2ea9590 INFO cluttersink ./clutter-gst-video-sink.c:372:clutter_gst_parse_caps:<cluttergstvideosink0> found the AYUV glsl renderer 0:00:03.628621376 24686 0x2ea9590 INFO cluttersink ./clutter-gst-video-sink.c:372:clutter_gst_parse_caps:<cluttergstvideosink0> found the AYUV glsl renderer 0:00:03.651675086 24686 0x2ea9590 WARN cluttersink ./clutter-gst-video-sink.c:1306:clutter_gst_video_sink_render: Replacing existing buffer 0x7f91600454f0 (most likely wasn't displayed) 0:00:03.651805942 24686 0x267d4d0 INFO cluttersink ./clutter-gst-video-sink.c:372:clutter_gst_parse_caps:<cluttergstvideosink0> found the AYUV glsl renderer 0:00:03.651838971 24686 0x267d4d0 INFO cluttersink ./clutter-gst-video-sink.c:387:clutter_gst_parse_caps:<cluttergstvideosink0> storing usage of the AYUV glsl renderer 0:00:03.651872134 24686 0x267d4d0 INFO cluttersink ./clutter-gst-video-sink.c:372:clutter_gst_parse_caps:<cluttergstvideosink0> found the AYUV glsl renderer 0:00:03.651889119 24686 0x267d4d0 INFO cluttersink ./clutter-gst-video-sink.c:387:clutter_gst_parse_caps:<cluttergstvideosink0> storing usage of the AYUV glsl renderer 0:00:03.663347577 24686 0x2ea9590 WARN cluttersink ./clutter-gst-video-sink.c:1306:clutter_gst_video_sink_render: Replacing existing buffer 0x7f9160045600 (most likely wasn't displayed)
This was fixed in Ubuntu Raring with the clutter-gst-2.0 - 2.0.2-0ubuntu1 update, with 3.8 release. Bug might be close-able..
Closing as obsolete based on comment #16.