[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
|