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
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.
Author: Wang Xin-yu (王昕宇) <firstname.lastname@example.org>
Date: Wed Aug 6 08:15:38 2014 -0400
glupload: don't determine if frame needs upload by pointer compare