Let's make this happen!!

Alexandre 



> Le 6 mars 2015 à 21:38, Esteban Lorenzano <esteba...@gmail.com> a écrit :
> 
> 
>>> On 07 Mar 2015, at 00:02, Nicolai Hess <nicolaih...@web.de> wrote:
>>> 
>>> 2015-03-06 20:18 GMT+01:00 Esteban Lorenzano <esteba...@gmail.com>:
>>> 
>>>> On 06 Mar 2015, at 18:40, kilon alios <kilon.al...@gmail.com> wrote:
>>>> 
>>>> very good example and very informative thank you.
>>>> 
>>>> Sadly it also shows that even with Athens Pharo is incredible slow. Simple 
>>>> animation spiking a single 3.2 Ghz core to 50% does not look very 
>>>> promising for heavy big size graphic based animations. Which is not a 
>>>> surprise since this was also evident the first time I tried the VGTiger 
>>>> demo. But still , its better than no Athens ;)
>>> 
>>> That’s because we are converting the rendering into a bitmap that is after 
>>> drawn for the vm… a complete inefficient mechanism. 
>> 
>> I heard this multiple times, but I still don't get it. The (cairo) rendering 
>> happens on a (in memory) imagesurface. There is no extra allocation
>> of a bitmap for every drawing on the screen. Drawing the rendering on the 
>> screen is a bitblt (copybits) operation, like it is done for every other 
>> Form.
> 
> I will try to explain… is a problem in several ways: 
> 1) what is not efficient at all is BitBlt plugin, our current way to display 
> things. Want an example? just open a new image, open a browser (or a 
> playground, or any window) and start moving it…. then watch how your cpu 
> starts heating (in my machine, is around 35%, some times… just one browser). 
> 2) Now… what we do with Athens is: 
>       a) create an in-memory surface and draw things there. 
>       b) convert that surface into a bitblt compatible format (this is 
> actually just a copy, not much actually) 
>       c) display the result into the current world window (another copy)
> 3) Now imagine all that cycling (stepping)… 
> 
> With OSWindow (SDL2) what we do is: 
> 1) create a SDL2 surface
> 2) draw on it
> 3) cycle on (2)
> 
>>  
>>> I have a running experiment for drawing directly in the canvas (using SDL2 
>>> library) and the tiger demo drops from eating 70% of cpu to 9% in my 
>>> machine. 
>> 
>> We can do this without SDL, but of course less platform independent, with 
>> cairos win32 , quartz, or xrender (os dependent) surfaces. This is really 
>> fast, no need
>> for an (in memory) image surface. But one problem with this approach is, 
>> some morphs need to access the current displays Form data (HandMorph for 
>> example).
>> And this does not work (or not easily) with the OS device surface. 
>> Does this work with cairo and SDL?
> 
> yes, why not?
> and yes… we can have several backends. The advantage on using SDL2 is that 
> you do not need to maintain one different backend for each platform. Of 
> course, it has also drawbacks, as always… but our manpower is determinant 
> here and we decided to take the “common approach”… we will have time to 
> improve later, if we find is necessary (but frankly, I do not think so for 
> the moment)
> 
>> 
>> One thing that is really slow is painting an image with Athens, because the 
>> cairo backend creates a new surface for this image and uses this
>> image as a pattern paint. The slow part is copying and converting the image 
>> data into the surface.
>> I already proposed an alternative, (it's a bit like cheating), we can use 
>> the bitblt to copy and convert the image data into the surface, this again 
>> is much faster.
> 
> this is something inherent to cairo (and athens as a result)… I suppose game 
> programmers already dealt with this problem. I suggest look there for answers 
> (I didn’t look there, nor seen your proposed solution yet… sorry I will as 
> soon as I find some time). 
> 
> cheers, 
> Esteban
> 
>> 
>>  
>>> Our idea is to move pharo in that direction for Pharo5 so next year we will 
>>> be a lot better :)
>>> 
>>> Esteban
>>> 
>>>> 
>>>>> On Fri, Mar 6, 2015 at 6:28 PM, Alexandre Bergel 
>>>>> <alexandre.ber...@me.com> wrote:
>>>>> This is really good that you are diving into Athens. It deserves it!
>>>>> 
>>>>> Alexandre
>>>>> 
>>>>> 
>>>>> > On Mar 6, 2015, at 10:20 AM, Nicolai Hess <nicolaih...@web.de> wrote:
>>>>> >
>>>>> > There is a "play" button in the SketchBrowser.
>>>>> > And if you open just the simple sketch view:
>>>>> > ASketchExampleColors openView
>>>>> > you'll have to start the drawing from the morph menu.
>>>>> >
>>>>> > In a prior version I had some "autoplay" option, but sometimes this 
>>>>> > throws
>>>>> > a NativeBoost error, if it is the first time it loads the cairo library.
>>>>> >
>>>>> > Maybe I should add the autoplay again.
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> > 2015-03-06 16:03 GMT+01:00 Torsten Bergmann <asta...@gmx.de>:
>>>>> > For me all the samples stay black. But the Athens tiger demo works...
>>>>> >
>>>>> > Is this a driver problem?
>>>>> >
>>>>> > Bye
>>>>> > T.
>>>>> >
>>>>> > Gesendet: Freitag, 06. März 2015 um 10:14 Uhr
>>>>> > Von: "Nicolai Hess" <nicolaih...@web.de>
>>>>> > An: "Pharo Development List" <pharo-dev@lists.pharo.org>, "Any question 
>>>>> > about pharo is welcome" <pharo-us...@lists.pharo.org>
>>>>> > Betreff: [Pharo-dev] [ANN AthensSketch] A playground for drawings with 
>>>>> > Athens.
>>>>> >
>>>>> > The main purpose of this packages is to ease the creation of simple 
>>>>> > drawings and provide a rich set of examples for Athens drawing API.
>>>>> > --------------
>>>>> > Gofer new
>>>>> >   smalltalkhubUser: 'NicolaiHess' project: 'AthensSketch';
>>>>> >   configuration;
>>>>> >   load.
>>>>> > ConfigurationOfAthensSketch loadDevelopment.
>>>>> >
>>>>> > AthensSketchBrowser open.
>>>>> >
>>>>> > -----------------
>>>>> >
>>>>> >
>>>>> > This is a simple playground for Athens drawings. Just subclass 
>>>>> > AthensSketch and define your own sketch drawing in the #drawStepOn: 
>>>>> > method. It provides basic frame based animation (play/pause/stop).
>>>>> >
>>>>> > Open a player with
>>>>> > ASketchExampleColors openPlayer',
>>>>> > or a simple viewer morph with
>>>>> > ASketchExampleColors openView (start and stop rendering from the morph 
>>>>> > menu)
>>>>> >
>>>>> > The AthensSketchBrowser lists all defined AthensSketch subclasses. 
>>>>> > (Basic examples
>>>>> > from package AthensSketch and some more examples from package 
>>>>> > ASketchExamples).
>>>>> > You can step through the list of examples, start and stop the drawing, 
>>>>> > or view and edit the drawing code.
>>>>> >
>>>>> > It is great that we have now a vector based drawing API. The (old) 
>>>>> > Canvas API is
>>>>> > already great for pixel based drawings. A rich API and many good things 
>>>>> > if
>>>>> > you discover it. And Athens is a  addition that can increase our 
>>>>> > possibilities.
>>>>> > There were some questions about Athens, what it is and what it is used 
>>>>> > for, maybe this
>>>>> > helps.
>>>>> >
>>>>> >
>>>>> > nicolai
>>>>> >
>>>>> 
>>>>> --
>>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>>> Alexandre Bergel  http://www.bergel.eu
>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> 

Reply via email to