[webkit-qt] TextureMapper activation and use without OpenGL (with underlying DirectFB backend)

noam.rosenthal at nokia.com noam.rosenthal at nokia.com
Thu Nov 10 06:48:00 PST 2011


You should always add -webkit-transform: translate3d(0, 0, 0)
to the text in CSS when it's not moving. Otherwise it would jump in and out of compositing mode.

No'am



On Nov 10, 2011, at 3:16 AM, ext Sébastien Royer wrote:

Hi

Does anyone have an idea about this ?

Thx in advance
Sebastien

Le 3 novembre 2011 09:53, Sébastien Royer <sroyer at wyplay.com<mailto:sroyer at wyplay.com>> a écrit :
Thx No'am.
That's clear.

Unfortunately, it seems using "translate3d()" is not enough. I still
have "drawTextItem()" called for each frame.
Maybe are there some "restrictions" on DOM elements for TextureMapping
to be active (I don't think so)... or maybe something broken on trunk (I
don't think so too ;-)...

In WebCore, I can see creation of GraphicsLayerQt class only when
"Hello" moves (6 instances for a single <span> tag animation). This
means that compositing is used I guess.

But no TextureMapperQt and BitmapTextureQt instances are created. There
is something missing to have TextureMapper activated in my situation.

If you have other ideas, yw ;))

Sebastien

Le 02/11/2011 17:46, noam.rosenthal at nokia.com<mailto:noam.rosenthal at nokia.com> a écrit :
> Hi Sebastien.
> -webkit-transform is not enough.
> You need to do one of the following:
> 1. use a CSS animation instead of JavaScript.
> 2. Use translate3d instead of translate.
>
>   el.style["WebkitTransform"] = "translate3d(" + (goRight ? "" : "-") + "80px, 0, 0)";
>
> will do the trick, though CSS animations is always a better idea than using JS, as the animation itself could be optimized in the engine rather than having the engine deal with every frame separately.
>
> btw this is not a QtWebKit issue - it's CSS3D best practices. See http://www.webkit.org/blog/386/3d-transforms/
> Also Ariya's blog on the subject (http://www.sencha.com/blog/understanding-hardware-acceleration-on-mobile-browsers/) can be helpful.
>
> No'am
> ________________________________________
> From: webkit-qt-bounces at lists.webkit.org<mailto:webkit-qt-bounces at lists.webkit.org> [webkit-qt-bounces at lists.webkit.org<mailto:webkit-qt-bounces at lists.webkit.org>] on behalf of ext Sébastien Royer [sroyer at wyplay.com<mailto:sroyer at wyplay.com>]
> Sent: Wednesday, November 02, 2011 9:35 AM
> To: webkit-qt at lists.webkit.org<mailto:webkit-qt at lists.webkit.org>
> Subject: Re: [webkit-qt] TextureMapper activation and use without OpenGL (with underlying DirectFB backend)
>
> Thx No'am,
>
>     I have tried your suggestion, replacing 'left' changes with
> "-webkit-transform" use (controlled by Javascript).
>     The result is the same (lots of "drawTextItem()" calls)
>     Here is the function which does this stuff. Maybe something wrong :
>
> function onTimer()
> {
>   goRight = !goRight;
>   var el = document.getElementById("myText");
>   el.style["WebkitTransform"] = "translate(" + (goRight ? "" : "-") +
> "80px, 0)";
>   setTimeout("onTimer()", 3500);
> }
>
>     I'm sure I'm not so far from solution ;)..
>
> Sebastien
>
> Le 02/11/2011 15:04, noam.rosenthal at nokia.com<mailto:noam.rosenthal at nokia.com> a écrit :
>
>> Hi Sebastien
>> Accelerated animations only work on -webkit-transform and opacity properties, not on "left", "size" or anything else.
>> You should be able to achieve your animation with "-webkit-transform", and that should not give you the excess of drawTextItem calls.
>> No'am
>>
>> On Nov 2, 2011, at 2:35 AM, ext Sébastien Royer wrote:
>>
>>
>>
>>> Hi,
>>>
>>>    I only used QWebView. In that case I saw just flat objects (in the
>>> "circle" example:
>>> http://webkit.org/blog-files/3d-transforms/poster-circle.html)
>>>    When I use a QGraphicsWebView, in that case, I can see 3D objects now.
>>>    So, in this new configuration, I retried my very simple web site
>>> which only contains a text moving from left to right periodically, and
>>> using CSS3 "left" property animation (declaring it as
>>> "-webkit-transition:all 1s ease-in-out;").
>>>    In that precise case, which normally must have texturemapping being
>>> activated (As I understand), I still have the graphics method
>>> "QPaintEngine::drawTextItem()" being called for every frame during
>>> animation, and "not only once" at first draw need.
>>>    (Even not needed, and to answer your question, I checked that
>>> QWebSettings::AcceleratedCompositingEnabled is really set to true)
>>>
>>>    Do you agree that this method "QPaintEngine::drawTextItem()" has not
>>> to be called every frame to redraw my "hello" text during animation ?
>>>
>>>    Here is the content of my page:
>>>
>>> <html>
>>> <head>
>>> <style type="text/css">
>>> #myText
>>> {
>>>        top: 100px;
>>>        left: 100px;
>>>        position: absolute;
>>>        -webkit-transition:all 1s ease-in-out;
>>> }
>>> </style>
>>>
>>> <script language="javascript">
>>> var goRight = false;
>>> function onTimer()
>>> {
>>>  goRight = !goRight;
>>>  document.getElementById("myText").style.left = goRight ? '300px' :
>>> '100px';
>>>  setTimeout("onTimer()", 3500);
>>> }
>>>
>>> setTimeout("onTimer()", 500);
>>> </script>
>>> </head>
>>> <body>
>>> <span id="myText">Hello</span>
>>> </body>
>>> </html>
>>>
>>>
>>>
>>> Thx
>>> Sebastien
>>>
>>>
>>> Le 28/10/2011 15:11, noam.rosenthal at nokia.com<mailto:noam.rosenthal at nokia.com> a écrit :
>>>
>>>
>>>> (Replying to list)
>>>> It probably means that you have accelerated compositing turned off.
>>>> Are you building from trunk, or using a release?
>>>> In any case, in the releases accelerated-compositing only works for QGraphicsWebView and needs QWebSettings::AcceleratedCompositingEnabled to be set to true,
>>>> and in trunk it should work both for QWebView and for QGraphicsWebView.
>>>>
>>>> No'am
>>>>
>>>> On Oct 28, 2011, at 12:39 PM, ext Sébastien Royer wrote:
>>>>
>>>>
>>>>
>>>>
>>>>> Hi No'am
>>>>>
>>>>>  Thanks for you answer.
>>>>>  Yes I use very light weight web sites that use webkit transforms/CSS.
>>>>>  I have tried the know web site you mention, and I can see the
>>>>> "circle" but with "flat" objects. Does it means TextureMapping is really
>>>>> "acting" ?
>>>>>
>>>>>  In fact, in my case, I have a <div> that contains 1 image + 1 text
>>>>> ("Hello").
>>>>>  When I apply a translation (through -webkit-transition) for this div
>>>>> to shift 'smoothly' from one point to an other, I see in QT that the
>>>>> text "Hello" is asked to be drawn for Each frame during the animation
>>>>> (in QPaintEngine::drawTextItem() (text not accelerated yet)).
>>>>>  I believed that TextureMapping would prevent those "non needed"
>>>>> additionnal text drawings since the visual content of the div, which is
>>>>> moved, has definitely not changed... and would have been drawn once in a
>>>>> "texture".
>>>>>
>>>>> Thx
>>>>> Sebastien
>>>>>
>>>>> NB: I am sorry to answer to your email directly since apparently you did
>>>>> not reply to the mailing list. Sorry.
>>>>>
>>>>> Le 27/10/2011 21:16, noam.rosenthal at nokia.com<mailto:noam.rosenthal at nokia.com> a écrit :
>>>>>
>>>>>
>>>>>
>>>>>> Hi Sebastien,
>>>>>>
>>>>>> On Oct 27, 2011, at 12:53 PM, ext Sébastien Royer wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> But my first tests show me that TextureMapper is not used yet in my case.
>>>>>>> What is missing ? Or what do you suggest me to do for it to be used in
>>>>>>> this context ?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> As of today in trunk, TextureMapper only gets activated in web content that becomes "composited", meaning code with CSS animations/3D. Does your web content fall under that category?
>>>>>> Have you tried it with one of the standard compositing tests (e.g. http://webkit.org/blog-files/3d-transforms/poster-circle.html)?
>>>>>> Opening that web-page above, do you see the "3D" circle, or just flat objects?
>>>>>>
>>>>>> No'am
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>> _______________________________________________
>>> webkit-qt mailing list
>>> webkit-qt at lists.webkit.org<mailto:webkit-qt at lists.webkit.org>
>>> http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt
>>>
>>>
>>
> _______________________________________________
> webkit-qt mailing list
> webkit-qt at lists.webkit.org<mailto:webkit-qt at lists.webkit.org>
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt
>


_______________________________________________
webkit-qt mailing list
webkit-qt at lists.webkit.org<mailto:webkit-qt at lists.webkit.org>
http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-qt/attachments/20111110/13084d4e/attachment-0001.html>


More information about the webkit-qt mailing list