From: Cedric B. <ced...@fr...> - 2008-04-13 16:34:03
|
On Fri, Apr 11, 2008 at 8:56 PM, Cedric BAIL <ced...@fr...> wrote: > Some of you already know, I am working on improving the speed of > evas_render_phase1_object_process. The idea is that the list of > active_object, and object to render will change much between to call > to evas_render. > > I started by removing the use of evas_list and use a growing array > of evas_object that is only freed on idle. This does bring only a > small speed improvement. Then I started to cache the result > evas_render_phase1_object_process and keep it alive except on layer > change, show, hide and some color set case. On move and resize I > wanted to just check if the state of stack of call to render_pre is > still valid and call them accordingly. It's almost working. Just the > resize is not. I don't understand why yet, but I can't make it work > the same way as the move. Perhaps someone can help me on understanding > this. > > So the code is attached for your fun, but don't commit it or it > will break for sure :-) After some sleep I found where was the problem and here is an updated patch that finally work. It improve speed when you don't call evas_object_show/hide and don't use layer. Each time you call them, the cache will be droped in other case it will work. This improvement will complexify the task when we will one day enable render_pre for smart object as it make the assumption that no evas_object are modified during call to evas_render_updates_internal. Please review this patch and test it with your application. -- Cedric BAIL |