[squeak-dev] Re: Need someone to test if NBOpenGL works for you on win32

Igor Stasenko siguctua at gmail.com
Mon May 24 23:12:12 UTC 2010


On 25 May 2010 00:18, Andreas Raab <andreas.raab at gmx.de> wrote:
> On 5/24/2010 1:28 PM, Igor Stasenko wrote:
>>
>> On 24 May 2010 23:06, Levente Uzonyi<leves at elte.hu>  wrote:
>>>
>>> On Mon, 24 May 2010, Igor Stasenko wrote:
>>>
>>>> Btw, i noticed that running it full-screen in pharo is still quite
>>>> fast and smooth,
>>>> which makes me wonder, what extra a squeak image does to perform
>>>> blitting on screen.
>>>> Something slows things down there.
>>>
>>> Did you try the profiler (Extras menu)? I found it pretty useful when I
>>> was
>>> hacking RFB recently.
>>>
>>
>> The tally looks weird :)
>
> http://lists.squeakfoundation.org/pipermail/squeak-dev/2009-February/134405.html
>
> A real-world case of issue #3.
>

Oh, i see.
So this is actually a time spent to draw a systemwindow background.

Btw, i discovered that openGL driver distributes the load over all 4
cores of my pc.



> Cheers,
>  - Andreas
>
>>  - 100146 tallies, 100419 msec.
>>
>> **Tree**
>> --------------------------------
>> Process: other processes
>> --------------------------------
>> 5.7% {5724ms} EventSensor>>eventTickler
>>   5.7% {5724ms} Delay>>wait
>>     5.7% {5724ms} primitives
>> --------------------------------
>> Process: (40) 43725: nil
>> --------------------------------
>> 94.3% {94695ms} WorldState>>doOneCycleFor:
>>   94.3% {94695ms} WorldState>>doOneCycleNowFor:
>>     93.9% {94293ms} WorldState>>displayWorldSafely:
>>       93.9% {94293ms} PasteUpMorph>>displayWorld
>>         93.9% {94293ms} PasteUpMorph>>privateOuterDisplayWorld
>>           93.9% {94293ms} WorldState>>displayWorld:submorphs:
>>             85.6% {85959ms}
>> WorldState>>drawWorld:submorphs:invalidAreasOn:
>>               |85.3% {85657ms} FormCanvas(Canvas)>>fullDrawMorph:
>>               |  85.3% {85657ms} FormCanvas(Canvas)>>fullDraw:
>>               |    85.3% {85657ms} SystemWindow(Morph)>>fullDrawOn:
>>               |      39.6% {39766ms}
>> SystemWindow(Morph)>>hasRolloverBorder
>>               |        |39.6% {39766ms} primitives
>>               |      34.2% {34343ms} SystemWindow(Morph)>>drawSubmorphsOn:
>>               |        |34.1% {34243ms} FormCanvas(Canvas)>>fullDrawMorph:
>>               |        |  34.1% {34243ms} FormCanvas(Canvas)>>fullDraw:
>>               |        |    34.1% {34243ms}
>> GLViewportMorph(Morph)>>fullDrawOn:
>>               |        |      33.9% {34042ms}
>> FormCanvas(Canvas)>>drawMorph:
>>               |        |        33.9% {34042ms} FormCanvas(Canvas)>>draw:
>>               |        |          33.9% {34042ms} GLViewportMorph>>drawOn:
>>               |        |            32.8% {32937ms}
>> NBMSAAOffscreenDisplay>>updateForm:bounds:
>>               |        |              32.7% {32837ms}
>> NBGLFrameBuffer>>bindAsDrawBuffer
>>               |      11.0% {11046ms} FormCanvas(Canvas)>>drawMorph:
>>               |        10.9% {10946ms} FormCanvas(Canvas)>>draw:
>>               |          10.9% {10946ms} SystemWindow(Morph)>>drawOn:
>>               |            10.9% {10946ms}
>> FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
>>               |              10.8% {10845ms}
>> FormCanvas>>fillRectangle:fillStyle:
>>               |                10.8% {10845ms}
>> FormCanvas>>balloonFillRectangle:fillStyle:
>>               |                  10.8% {10845ms}
>> BalloonCanvas>>fillRectangle:fillStyle:
>>               |                    10.8% {10845ms}
>> BalloonCanvas>>drawRectangle:color:borderWidth:borderColor:
>>               |                      10.7% {10745ms}
>> BalloonEngine>>drawRectangle:fill:bor...borderColor:transform:
>>               |                        10.7% {10745ms}
>> BalloonEngine>>postFlushIfNeeded
>>               |                          10.7% {10745ms}
>> BalloonEngine>>copyBits
>>               |                            10.7% {10745ms}
>> BalloonEngine>>copyLoopFaster
>>               |                              10.7% {10745ms} primitives
>>             8.3% {8335ms} WorldState>>forceDamageToScreen:
>>               8.3% {8335ms} DisplayScreen>>forceDamageToScreen:
>>                 8.3% {8335ms} OrderedCollection>>do:
>>  **Leaves**
>> 39.6% {39766ms} SystemWindow(Morph)>>hasRolloverBorder
>> 32.7% {32837ms} NBGLFrameBuffer>>bindAsDrawBuffer
>> 10.7% {10745ms} BalloonEngine>>copyLoopFaster
>> 8.3% {8335ms} OrderedCollection>>do:
>> 5.7% {5724ms} Delay>>wait
>>
>> **Memory**
>>        old                     +193,508 bytes
>>        young           +173,384 bytes
>>        used            +366,892 bytes
>>        free            -366,892 bytes
>>
>> **GCs**
>>        full                    0 totalling 0ms (0.0% uptime)
>>        incr            1331 totalling 356ms (0.0% uptime), avg 0.0ms
>>        tenures         2 (avg 665 GCs/tenure)
>>        root table      0 overflows
>>
>> --------
>> This is weird it shows that it spends 40% of time in
>> SystemWindow(Morph)>>hasRolloverBorder
>>
>> The actual workload should be concentrated here:
>>               |        |            32.8% {32937ms}
>> NBMSAAOffscreenDisplay>>updateForm:bounds:
>>               |        |              32.7% {32837ms}
>> NBGLFrameBuffer>>bindAsDrawBuffer
>>
>> but it takes only 1/3 of all time (this is including blitting bits
>> back to system memory).
>>
>>
>>
>> What is interesting, that if there is no copy to system memory,
>> rendering these simple things (about
>> 60 glyphs with nice AA), takes less than 2% of time:
>>
>>               |                  1.6% {689ms} GLViewportMorph>>drawOn:
>>
>> while most of the time, again spent in #hasRolloverBorder
>> **Leaves**
>> 61.3% {26403ms} SystemWindow(Morph)>>hasRolloverBorder
>> 15.9% {6848ms} BalloonEngine>>copyLoopFaster
>> 12.0% {5169ms} OrderedCollection>>do:
>> 4.7% {2024ms} Delay>>wait
>>
>> So, it could run 32%/2% ~~ 16 times faster
>>
>>
>>>
>>> Levente
>>>
>>>>
>>>> In both images, i used:
>>>>
>>>> Display depth 32
>>>> Display isLittleEndian  true
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko AKA sig.
>>>>
>>>>
>>>
>>>
>>
>>
>>
>
>
>



-- 
Best regards,
Igor Stasenko AKA sig.



More information about the Squeak-dev mailing list