GNOME Bugzilla – Bug 734269
GLUpload didn't update texture properly
Last modified: 2014-08-06 04:56:03 UTC
if create a pipeline as appsrc ! gleffects ! glimagesink but didn't push buffer fast enough (slower than caps's FPS), gl render window only redraw a few frames, and then stay at last frame. but if triggered some UI exposed event (move ,resize ,or other window overlay gl render window), some frames updates ,then stay again. but this problem only happend on windows. linux works OK if pipeline is appsrc ! glimagesink no such problem. (both windows and linux worked) after some debug, I found _gst_gl_upload_perform_with_data_unlocked use pointer compare upload->in_tex[i]->data != data[i] to determine if glmemory needs to be re-upload ,I'm not sure if this is incorrect, in pipeline appsrc ! gleffects ! glimagesink these two pointer almost equals every time on windows ,but different every time on Linux. if without this condition check , problem gone.
Sounds good. Can you provide a patch?
Created attachment 282616 [details] [review] remove the pointer compare condition check (In reply to comment #1) > Sounds good. Can you provide a patch? my pleasure, this patch just remove the condition check. it "fix" the problem, but I'm not sure if this is the correct "logical fix"
(In reply to comment #2) > (In reply to comment #1) > > Sounds good. Can you provide a patch? > > my pleasure, this patch just remove the condition check. it "fix" the problem, > but I'm not sure if this is the correct "logical fix" It is :). glupload shouldn't rely on the pointers being different to determine whether to upload.
commit ba822e1dd07fec9ed5010bd3b4e8f723a4d4f06f Author: Wang Xin-yu (王昕宇) <comicfans44@gmail.com> Date: Wed Aug 6 08:15:38 2014 -0400 glupload: don't determine if frame needs upload by pointer compare https://bugzilla.gnome.org/show_bug.cgi?id=734269 and 1.4 commit 0b651caed5bacd4545bb7b420a3799c64e0fe6d8