Hi Reza, Cogl 1.14 should be able to gracefully report out of memory conditions when allocating textures and framebuffers. The recommended way would be to use cogl_texture_allocate() and cogl_framebuffer_allocate() to explicitly try and allocate texture and framebuffer resources which can report a CoglError if there was a problem.
If you are using Cogl's high level texture constructors like cogl_texture_new_with_size or cogl_texture_new_from_data then these apis should return NULL if there was a problem allocating the texture due to lack of memory but in Cogl 1.14 it looks like we broke these semantics and it's possible for cogl_texture_new_with_size to return a CoglTexture object which doesn't yet have an associated allocation and you could hit an error later if you try to create a framebuffer from that texture if it turns out you don't have enough memory. I think Clutter 1.14 uses cogl_texture_new_with_size for the offscreen effects and it is expecting it to return NULL if there is an error. Similarly Clutter uses cogl_offscreen_new_to_texture() and expects that to return NULL on failure to allocate. I'm afraid that we also broke the semantics of this api too :-/ I've just push a wip/cogl-14-fixes branch with a couple of patches that may help you by fixing both of those regressions on the 1.14 branch. I hope that helps, Robert On Sat, Oct 12, 2013 at 12:00 AM, Reza Ghassemi <[email protected]>wrote: > Sorry, somehow sent this before I was done. > To conclude: > The output below shows Clutter warning when the texture for the 2nd > offscreen effect (blur) on an actor tree could not be allocated. The first > effect (desaturate) did get allocated and applied and displayed properly. > However when an animated page turn effect on a stack of 5 actors was > attempted the GL out of memory errors occurred and parts or the entire > screen went black. > > Question: Any recommendations how to deal with this? Is this a bug in > cogl or clutter? Is this expected? We want to just not do the effect if > memory is going to run out and avoid the black screen. Should we do some > memory queries and keep track of how much we might need and catch potential > problems in application code? > > Upgrading to 1.16 is going to take some effect do to dependency changes > and deprecated function use so we'd like to avoid that if possible. > > Thanks again. > > Reza > > > > On Fri, Oct 11, 2013 at 3:36 PM, Reza Ghassemi <[email protected]>wrote: > >> Hello Clutter users and developers, >> >> Using the top of 1.14 branch when trying to use 2 offscreen effects such >> as blur and desaturate on a full HD screen sized actor and then after that >> trying to do a page turn effect on a smaller actor we run out of video RAM >> (I'm assuming) on our OpenGL ES device and get errors from Cogl when it >> calls GL calls to render attributes or allocate texture memory for >> resulting in black actor(s). >> >> While we might be able to fix this particular issue by making sure to >> remove/destroy the effects from the actor before applying another effect on >> another actor, we want a graceful general way to handle tight memory >> situations and not just display black to support other party developement >> with our script driven driven system. It seems that you can eat up most of >> your memory with an effect and then memory runs out just trying to draw >> normal actors with no effects >> >> Clutter-WARNING **: Unable to allocate texture for offscreen effect: Out >> of memory >> >> However we get into a situation where we're getting errors from GL out of >> memory I guess when trying to use more than one offscreen effect in the >> same scene and when some of them are failing. This results in black >> textures. It seems that the memory isn't recovered until the actors are >> deleted and a new scene is constructed. >> >> (.:1836): Cogl-WARNING **: ./driver/gl/cogl-framebuffer-gl.c:1072: GL >> error (1285): Out of memory >> >> >> (.:1836): Cogl-WARNING **: ./driver/gl/cogl-framebuffer-gl.c:1072: GL >> error (1285): Out of memory >> >> >> (.:1836): Cogl-WARNING **: ./driver/gl/cogl-framebuffer-gl.c:1139: GL >> error (1285): Out of memory >> >> >> (.:1836): Cogl-WARNING **: ./driver/gl/cogl-framebuffer-gl.c:1072: GL >> error (1285): Out of memory >> >> >> (.:1836): Cogl-WARNING **: ./driver/gl/cogl-framebuffer-gl.c:1072: GL >> error (1285): Out of memory >> >> >> (.:1836): Cogl-WARNING **: ./driver/gl/cogl-framebuffer-gl.c:1139: GL >> error (1285): Out of memory >> >> >> (.:1836): Cogl-WARNING **: ./driver/gl/cogl-framebuffer-gl.c:1072: GL >> error (1285): Out of memory >> > > > _______________________________________________ > clutter-list mailing list > [email protected] > https://mail.gnome.org/mailman/listinfo/clutter-list > >
_______________________________________________ clutter-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/clutter-list
