After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 759208 - cluttersink: Never render on slow upload
cluttersink: Never render on slow upload
Status: RESOLVED FIXED
Product: clutter-gst
Classification: Other
Component: general
3.0.x
Other Linux
: Normal normal
: ---
Assigned To: clutter-gst-maint
clutter-gst-maint
Depends on:
Blocks:
 
 
Reported: 2015-12-08 19:50 UTC by Nicolas Dufresne (ndufresne)
Modified: 2015-12-10 14:42 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
video-sink: Ensure uploaded frame are displayed (1.17 KB, patch)
2015-12-08 19:51 UTC, Nicolas Dufresne (ndufresne)
none Details | Review
video-sink: Ensure uploaded frame are displayed (1.37 KB, patch)
2015-12-08 22:44 UTC, Nicolas Dufresne (ndufresne)
committed Details | Review

Description Nicolas Dufresne (ndufresne) 2015-12-08 19:50:48 UTC
When uploads get slow enough nothing is ever rendered. This is because the upload source has higher priority then the renderer. As we endup always having an upload pending, we never render anything to screen. Priority should be given to renderer (note rendering require multiple messages).
Comment 1 Nicolas Dufresne (ndufresne) 2015-12-08 19:51:07 UTC
Created attachment 316974 [details] [review]
video-sink: Ensure uploaded frame are displayed

This is fixed by making the uploading source lower priority than
the redraws. This is important, as Texture2D upload on slow memory
system can take a lot of time. You still want your UI to be
responsive (being able to show controls, resize, etc.)
Comment 2 Nicolas Dufresne (ndufresne) 2015-12-08 22:44:05 UTC
Created attachment 316985 [details] [review]
video-sink: Ensure uploaded frame are displayed

This is fixed by making the uploading source equen priority to
the redraws. This is important, as Texture2D upload on slow memory
system can take a lot of time. You still want your UI to be
responsive (being able to show controls, resize, etc.) and not spend all
the time uploading. Ideally, we want exactly one upload per render but
we don't have that much control. A lower priority makes the video jitter
when there is overlayed animation happening.
Comment 3 Lionel Landwerlin 2015-12-09 09:05:00 UTC
Review of attachment 316985 [details] [review]:

Ok.
Just out of curiosity, what kind of device are you having issues with? RPi?
Comment 4 Nicolas Dufresne (ndufresne) 2015-12-09 14:09:46 UTC
It's an Amlogic S805. In 720p with an HW decoder that produce RGB32, nothing ever get rendered as it's uploading in loop. I suspect this will never be seen with SW decoder, as decoding becomes the bottleneck. It remains that as soon as the copy done in Texture2D (in the GL stack) becomes the bottleneck, the chosen priority will cause the rendering to starve.

In an ideal design, we'd find a way to guaranty that everything that get uploaded also get rendered, so we don't waste all this effort.
Comment 5 Lionel Landwerlin 2015-12-10 14:42:32 UTC
Review of attachment 316985 [details] [review]:

Pushed to 3.0 branch.