[Weekend Procastination] what the new minheadless opens as posibilities :D

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[Weekend Procastination] what the new minheadless opens as posibilities :D

Guillermo Polito
Hi all,

Over the weekend, instead of working on my ESUG presentations I procastinated a bit with some experiments that I would like to share ^^.

Procastination 1: Render the world fully in athens (instead of a middling bitmap) to have an idea of the effort to get fast to hdpi

  What you see here is a world drawn completely in athens in minheadless, where in red are the invalidated rectangles in the screen (I’m using to debug a bit).
  Icons are broken because I broke them while playing, not because they do not work in athens :P.
  There is still work to do if we want to explore this direction. Mainly performance issues to make it at least usable, so it can be iterated easily.
  We have seen with Pablo that a lot of time is taken in the transformation of morphic/pharo form/bitmaps to athens ones, since they do not have the same format and right now it is done with a bit-per-bit copy.


Procastination 2: poping out morphs out of the world



What you see here is that I can have different os windows with different worlds, giving a multi-window experience :).
There is also work to do in this direction if we want to push it:
  - morphic support for multiple worlds/windows is not so good...
  - the usage of the current world needs to be reviewed. The world has two distinct responsibilities right now
     1) it is the manager of the hands (required for drag n drop)
     2) it is the main container/pasteup for other morphs

Imagine in the short term a Morphic Spec app can use a “external window rendering on athens” strategy that mixes the two things above and each new window is popped up as a new window. :D

For those @ESUG, I’ll be arriving this evening, I’m going to show this in the show us your projects, and if you want to help, please contact me, you can learn a lot and its super fun :)
Reply | Threaded
Open this post in threaded view
|

Re: [Weekend Procastination] what the new minheadless opens as posibilities :D

Ben Coman
Thanks for sharing Guille.  

Now what I was wondering is what possibilities minheadless opens up for running on IOS and Android tablets and phones.
IIUC one of the impediments was not being native-event-driven.  Is the VM event handling now factored out to the degree necessary
to drive it from native-events, or what more work is required there?


On Mon, 26 Aug 2019 at 16:43, Guillermo Polito <[hidden email]> wrote:
Hi all,

Over the weekend, instead of working on my ESUG presentations I procastinated a bit with some experiments that I would like to share ^^.

Procastination 1: Render the world fully in athens (instead of a middling bitmap) to have an idea of the effort to get fast to hdpi

  What you see here is a world drawn completely in athens in minheadless, where in red are the invalidated rectangles in the screen (I’m using to debug a bit).
  Icons are broken because I broke them while playing, not because they do not work in athens :P.
  There is still work to do if we want to explore this direction. Mainly performance issues to make it at least usable, so it can be iterated easily.
  We have seen with Pablo that a lot of time is taken in the transformation of morphic/pharo form/bitmaps to athens ones, since they do not have the same format and right now it is done with a bit-per-bit copy.


Procastination 2: poping out morphs out of the world

What you see here is that I can have different os windows with different worlds, giving a multi-window experience :).
There is also work to do in this direction if we want to push it:
  - morphic support for multiple worlds/windows is not so good...
  - the usage of the current world needs to be reviewed. The world has two distinct responsibilities right now
     1) it is the manager of the hands (required for drag n drop)
     2) it is the main container/pasteup for other morphs

Imagine in the short term a Morphic Spec app can use a “external window rendering on athens” strategy that mixes the two things above and each new window is popped up as a new window. :D

For those @ESUG, I’ll be arriving this evening, I’m going to show this in the show us your projects, and if you want to help, please contact me, you can learn a lot and its super fun :)

cheers -ben 

PastedGraphic-5.png (951K) Download Attachment
PastedGraphic-4.png (687K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [Weekend Procastination] what the new minheadless opens as posibilities :D

ducasse
In reply to this post by Guillermo Polito
Hi guille

Procastination 1: Render the world fully in athens (instead of a middling bitmap) to have an idea of the effort to get fast to hdpi
<PastedGraphic-5.png>
  What you see here is a world drawn completely in athens in minheadless, where in red are the invalidated rectangles in the screen (I’m using to debug a bit).
  Icons are broken because I broke them while playing, not because they do not work in athens :P.
  There is still work to do if we want to explore this direction. Mainly performance issues to make it at least usable, so it can be iterated easily.
  We have seen with Pablo that a lot of time is taken in the transformation of morphic/pharo form/bitmaps to athens ones, since they do not have the same format and right now it is done with a bit-per-bit copy.

I do not get it. You are saying that it is slow while I have the impression that if we remove the bit-per-bit copy we should get faster. 


Procastination 2: poping out morphs out of the world

<PastedGraphic-4.png>

What you see here is that I can have different os windows with different worlds, giving a multi-window experience :).
There is also work to do in this direction if we want to push it:
  - morphic support for multiple worlds/windows is not so good...
  - the usage of the current world needs to be reviewed. The world has two distinct responsibilities right now
     1) it is the manager of the hands (required for drag n drop)
     2) it is the main container/pasteup for other morphs

Imagine in the short term a Morphic Spec app can use a “external window rendering on athens” strategy that mixes the two things above and each new window is popped up as a new window. :D

For those @ESUG, I’ll be arriving this evening, I’m going to show this in the show us your projects, and if you want to help, please contact me, you can learn a lot and its super fun :)

Reply | Threaded
Open this post in threaded view
|

Re: [Weekend Procastination] what the new minheadless opens as posibilities :D

EstebanLM
In reply to this post by Ben Coman


On 26 Aug 2019, at 13:16, Ben Coman <[hidden email]> wrote:

Thanks for sharing Guille.  

Now what I was wondering is what possibilities minheadless opens up for running on IOS and Android tablets and phones.
IIUC one of the impediments was not being native-event-driven.  Is the VM event handling now factored out to the degree necessary
to drive it from native-events, or what more work is required there?

To be competitive in the mobile world, we need an idle vm. 
While moving the responsibility of showing the world to the image (and with that, removing the need of a UI cycle) is something needed, we still need to eliminate the heartbeat. 
And that is an effort of proportions.

Esteban



On Mon, 26 Aug 2019 at 16:43, Guillermo Polito <[hidden email]> wrote:
Hi all,

Over the weekend, instead of working on my ESUG presentations I procastinated a bit with some experiments that I would like to share ^^.

Procastination 1: Render the world fully in athens (instead of a middling bitmap) to have an idea of the effort to get fast to hdpi

  What you see here is a world drawn completely in athens in minheadless, where in red are the invalidated rectangles in the screen (I’m using to debug a bit).
  Icons are broken because I broke them while playing, not because they do not work in athens :P.
  There is still work to do if we want to explore this direction. Mainly performance issues to make it at least usable, so it can be iterated easily.
  We have seen with Pablo that a lot of time is taken in the transformation of morphic/pharo form/bitmaps to athens ones, since they do not have the same format and right now it is done with a bit-per-bit copy.


Procastination 2: poping out morphs out of the world

What you see here is that I can have different os windows with different worlds, giving a multi-window experience :).
There is also work to do in this direction if we want to push it:
  - morphic support for multiple worlds/windows is not so good...
  - the usage of the current world needs to be reviewed. The world has two distinct responsibilities right now
     1) it is the manager of the hands (required for drag n drop)
     2) it is the main container/pasteup for other morphs

Imagine in the short term a Morphic Spec app can use a “external window rendering on athens” strategy that mixes the two things above and each new window is popped up as a new window. :D

For those @ESUG, I’ll be arriving this evening, I’m going to show this in the show us your projects, and if you want to help, please contact me, you can learn a lot and its super fun :)

cheers -ben 
<PastedGraphic-4.png><PastedGraphic-5.png>

Reply | Threaded
Open this post in threaded view
|

Re: [Weekend Procastination] what the new minheadless opens as posibilities :D

ducasse
In reply to this post by Ben Coman


On 26 Aug 2019, at 13:16, Ben Coman <[hidden email]> wrote:

Thanks for sharing Guille.  

Now what I was wondering is what possibilities minheadless opens up for running on IOS and Android tablets and phones.
IIUC one of the impediments was not being native-event-driven.  Is the VM event handling now factored out to the degree necessary
to drive it from native-events,

Not yet from pablo and esteban told me. 

or what more work is required there?

I do not know but I know that some work is needed. 
But this is in our roadmap. 


On Mon, 26 Aug 2019 at 16:43, Guillermo Polito <[hidden email]> wrote:
Hi all,

Over the weekend, instead of working on my ESUG presentations I procastinated a bit with some experiments that I would like to share ^^.

Procastination 1: Render the world fully in athens (instead of a middling bitmap) to have an idea of the effort to get fast to hdpi

  What you see here is a world drawn completely in athens in minheadless, where in red are the invalidated rectangles in the screen (I’m using to debug a bit).
  Icons are broken because I broke them while playing, not because they do not work in athens :P.
  There is still work to do if we want to explore this direction. Mainly performance issues to make it at least usable, so it can be iterated easily.
  We have seen with Pablo that a lot of time is taken in the transformation of morphic/pharo form/bitmaps to athens ones, since they do not have the same format and right now it is done with a bit-per-bit copy.


Procastination 2: poping out morphs out of the world

What you see here is that I can have different os windows with different worlds, giving a multi-window experience :).
There is also work to do in this direction if we want to push it:
  - morphic support for multiple worlds/windows is not so good...
  - the usage of the current world needs to be reviewed. The world has two distinct responsibilities right now
     1) it is the manager of the hands (required for drag n drop)
     2) it is the main container/pasteup for other morphs

Imagine in the short term a Morphic Spec app can use a “external window rendering on athens” strategy that mixes the two things above and each new window is popped up as a new window. :D

For those @ESUG, I’ll be arriving this evening, I’m going to show this in the show us your projects, and if you want to help, please contact me, you can learn a lot and its super fun :)

cheers -ben 
<PastedGraphic-4.png><PastedGraphic-5.png>

Reply | Threaded
Open this post in threaded view
|

Re: [Weekend Procastination] what the new minheadless opens as posibilities :D

Guillermo Polito
In reply to this post by ducasse


El 26 ago 2019, a las 14:08, ducasse <[hidden email]> escribió:

Hi guille

Procastination 1: Render the world fully in athens (instead of a middling bitmap) to have an idea of the effort to get fast to hdpi
<PastedGraphic-5.png>
  What you see here is a world drawn completely in athens in minheadless, where in red are the invalidated rectangles in the screen (I’m using to debug a bit).
  Icons are broken because I broke them while playing, not because they do not work in athens :P.
  There is still work to do if we want to explore this direction. Mainly performance issues to make it at least usable, so it can be iterated easily.
  We have seen with Pablo that a lot of time is taken in the transformation of morphic/pharo form/bitmaps to athens ones, since they do not have the same format and right now it is done with a bit-per-bit copy.

I do not get it. You are saying that it is slow while I have the impression that if we remove the bit-per-bit copy we should get faster. 

There are two different things in here :).

First, in morphic we have bitmaps and forms representing for example icons and images.
Those forms/bitmaps are stored in a format that is not cairo compatible, so every time we need to render an icon a super expensive transformation takes place.
The other day we worked with Pablo in some caching of those transformations and it improves indeed a lot.
Still we have to see if it makes sense to add those caches (where to put them how to invalidate them, are they shared or not…), or if we change the internal representation of forms, or what :).

Second, right now minheadless is drawing the morphic world into a form and then the form is copied (literally blitted usin bitblt) into the cairo context/sdl texture.
What this first experiment is about is to render directly on the sdl texture without the extra copy.
I don’t think is will be necessary faster as this is just avoiding a couple of copies (blits) but the athens morphic renderer is far less optimized than the historical one…
The question to me is: can this be **as fast as the bitblt one** yet render better in hdpi?