Re: OMTC on Windows

2014-05-29 Thread Bas Schouten
Hi Gavin,

I initially responded to Gijs' e-mail a while ago, before it got through 
dev-platform moderation. Since then I've discovered one bug which I believe is 
related. This one is tracked in bug 1017298. In particular this occurs when a 
user first has more tabs open than the window can fit, i.e. the tab strip 
becomes 'scrollable', and then starts closing them, without interruption, to 
the point where they do fit, and they start 'growing'. This causes layers to 
rapidly change size (every animation frame), since the tab strip in this 
scenario 'remains actively layerized' for a little while (unlike when it was 
never overflowing in the first place, and therefor never got layerized).

There are reasons to belief the new architecture performs somewhat worse than 
the old architecture when resizing layers. Usually this is a rare situation but 
I believe the situation described above -might- be exactly what happens during 
the TART tab close tests. In general I don't think many users will run into 
this, but it might explain part of that. Matt is looking into whether something 
can be done here.

I'll continue looking into what might affect our performance numbers. If either 
people from the performance teams or the desktop teams are interested in 
investigating our tests and how well they measure practical performance, I 
think that would be very valuable, and it would help us a lot in identifying 
for what sort of interactions we need to investigate the performance.

In addition to that if the performance or desktop teams have good ideas of 
other interactions (than tab-close) which seem to have regressed a lot in 
particular, that will also help a lot in our investigations. My knowledge of 
TART is limited.

Bug 1013262 is the general tracking bug but there's not too much info there to 
be honest.

Thanks!

Bas

- Original Message -
From: Gavin Sharp ga...@gavinsharp.com
To: Vladimir Vukicevic vladi...@mozilla.com
Cc: Gijs Kruitbosch gijskruitbo...@gmail.com, Bas Schouten 
bschou...@mozilla.com, dev-tech-...@lists.mozilla.org, mozilla.dev.platform 
group dev-platform@lists.mozilla.org, release-drivers 
release-driv...@mozilla.org
Sent: Wednesday, May 28, 2014 7:15:09 PM
Subject: Re: OMTC on Windows

Who's responsible for looking into the test/regression? Bas? Does the
person looking into it need help from the performance or desktop teams?

What bug is tracking that work?

Gavin


On Wed, May 28, 2014 at 12:12 PM, Vladimir Vukicevic
vladi...@mozilla.comwrote:

 (Note: I have not looked into the details of CART/TART and their
 interaction with OMTC)

 It's entirely possible that (b) is true *now* -- the test may have been
 good and proper for the previous environment, but now the environment
 characteristics were changed such that the test needs tweaks.  Empirically,
 I have not seen any regressions on any of my Windows machines (which is
 basically all of them); things like tab animations and the like have
 started feeling smoother even after a long-running browser session with
 many tabs.  I realize this is not the same as cold hard numbers, but it
 does suggest to me that we need to take another look at the tests now.

 - Vlad

 - Original Message -
  From: Gijs Kruitbosch gijskruitbo...@gmail.com
  To: Bas Schouten bschou...@mozilla.com, Gavin Sharp 
 ga...@gavinsharp.com
  Cc: dev-tech-...@lists.mozilla.org, mozilla.dev.platform group 
 dev-platform@lists.mozilla.org, release-drivers
  release-driv...@mozilla.org
  Sent: Thursday, May 22, 2014 4:46:29 AM
  Subject: Re: OMTC on Windows
 
  Looking on from m.d.tree-management, on Fx-Team, the merge from this
  change caused a 40% CART regression, too, which wasn't listed in the
  original email. Was this unforeseeen, and if not, why was this
  considered acceptable?
 
  As gavin noted, considering how hard we fought for 2% improvements (one
  of the Australis folks said yesterday 1% was like Christmas!) despite
  our reasons of why things were really OK because of some of the same
  reasons you gave (e.g. running in ASAP mode isn't realistic, TART is
  complicated, ...), this hurts - it makes it seem like (a) our
  (sometimes extremely hacky) work was done for no good reason, or (b) the
  test is fundamentally flawed and we're better off without it, or (c)
  when the gfx team decides it's OK to regress it, it's fine, but not when
  it happens to other people, quite irrespective of reasons given.
 
  All/any of those being true would give me the sad feelings. Certainly it
  feels to me like (b) is true if this is really meant to be a net
  perceived improvement despite causing a 40% performance regression in
  our automated tests.
 
  ~ Gijs
 
  On 18/05/2014 19:47, Bas Schouten wrote:
   Hi Gavin,
  
   There have been several e-mails on different lists, and some
 communication
   on some bugs. Sadly the story is at this point not anywhere in a
 condensed
   form, but I will try to highlight a couple of core points, some

Re: OMTC on Windows

2014-05-22 Thread Bas Schouten
Hi Gijs,

None of those things are true in my opinion. For what it's worth, the expected 
regression in CART was more around 20% than around 40%. The number surprises me 
a little, and we'll look into what makes CART so bad off (on our test servers) 
specifically. We haven't looked specifically at CART as we mostly looked into 
TART and Tsvgr while investigating.

I'll address each point individually:

a) Extremely hacky work for a 1% gain seems like a bad idea. Depending on how 
hacky, maintainable, etc, that seems like it might have been the wrong decision 
:-). But 1% gains can still accumulate, so I certainly wouldn't call them 
useless.
b) You have to look at what the tests are meant to do, Avi knows more about the 
tests than I do and has already supplied some information, but there's a 
difference in tweaking the UI, or a specific portion of rendering, or radically 
changing the way we draw things. The tests might not be a good reflection of 
the average user experience, but they help us catch situations where we 
unwittingly harm performance, or where we want proof that a change in some core 
algorithm does indeed make things run faster. That makes them very useful, just 
not for radical architectural changes. Fwiw, in what CART or TART is testing 
I'm not claiming it will be a net performance improvement, there are however 
other interactions that improve that are inherently linked to this one and 
cannot be decoupled (because of it being an architectural change). Similarly we 
only run our tests on one hardware configuration, this in my mind again 
stresses their purpose as a relative regression test as opposed to 
 being representative of perceived UX.
c) A couple of things here, first of all we consulted with people outside of 
the gfx team about this, and we were in agreement with the people we talked to. 
When it comes to moving forward architecturally we should always be ready to 
accept something regressing, that has nothing to do with what team is doing the 
regression, that is related to what we're trying to accomplish. I can guarantee 
you for example, e10s will cause at least some significant regressions in some 
situations, yet we might very well have to accept those regressions to offer 
our users big improvements in other areas, as well as to pave the way for 
future improvements. With OMTA for example, several aspects of our (UI) 
performance can be improved in a way that no amount of TART improvements in the 
old architecture ever could.

Now I don't want to repeat too much of what I've already said, but I'd like to 
reiterate on the fact that if there are 'real' regressions in the overall user 
experience, we will of course attempt to address those issues, but we are also 
only a pref change away from going back to on-main-thread compositing.

The focus should, in my opinion be, what has actually been affected by this in 
a way that it has a strong, negative impact on user experience. Considering the 
scope of this change I am certain those things exist and they will need to be 
fixed. Perhaps the CART regression -is- a sign of some real unacceptable 
perceived performance, I'm not ruling that out, but we have not identified an 
interaction which significantly regressed. This is all extremely hardware 
dependent though (i.e. on most of my machines TART and CART both improve with 
OMTC), so if someone -has- seen this cause a significant performance regression 
in some sort of interaction, do let us know.

Best regards,
Bas


- Original Message -
From: Gijs Kruitbosch gijskruitbo...@gmail.com
To: Bas Schouten bschou...@mozilla.com, Gavin Sharp ga...@gavinsharp.com
Cc: dev-tech-...@lists.mozilla.org, mozilla.dev.platform group 
dev-platform@lists.mozilla.org, release-drivers 
release-driv...@mozilla.org
Sent: Thursday, May 22, 2014 8:46:29 AM
Subject: Re: OMTC on Windows

Looking on from m.d.tree-management, on Fx-Team, the merge from this 
change caused a 40% CART regression, too, which wasn't listed in the 
original email. Was this unforeseeen, and if not, why was this 
considered acceptable?

As gavin noted, considering how hard we fought for 2% improvements (one 
of the Australis folks said yesterday 1% was like Christmas!) despite 
our reasons of why things were really OK because of some of the same 
reasons you gave (e.g. running in ASAP mode isn't realistic, TART is 
complicated, ...), this hurts - it makes it seem like (a) our 
(sometimes extremely hacky) work was done for no good reason, or (b) the 
test is fundamentally flawed and we're better off without it, or (c) 
when the gfx team decides it's OK to regress it, it's fine, but not when 
it happens to other people, quite irrespective of reasons given.

All/any of those being true would give me the sad feelings. Certainly it 
feels to me like (b) is true if this is really meant to be a net 
perceived improvement despite causing a 40% performance regression in 
our automated tests.

~ Gijs

On 18/05/2014 19:47, Bas

Re: OMTC on Windows

2014-05-22 Thread Bas Schouten




- Original Message -
 From: Ehsan Akhgari ehsan.akhg...@gmail.com
 To: Bas Schouten bschou...@mozilla.com, Gijs Kruitbosch 
 gijskruitbo...@gmail.com
 Cc: Gavin Sharp ga...@gavinsharp.com, dev-tech-...@lists.mozilla.org, 
 mozilla.dev.platform group
 dev-platform@lists.mozilla.org, release-drivers 
 release-driv...@mozilla.org
 Sent: Thursday, May 22, 2014 12:56:26 PM
 Subject: Re: OMTC on Windows
 
 On 2014-05-22, 5:18 AM, Bas Schouten wrote:
  The focus should, in my opinion be, what has actually been affected by this
  in a way that it has a strong, negative impact on user experience.
  Considering the scope of this change I am certain those things exist and
  they will need to be fixed. Perhaps the CART regression -is- a sign of
  some real unacceptable perceived performance, I'm not ruling that out, but
  we have not identified an interaction which significantly regressed. This
  is all extremely hardware dependent though (i.e. on most of my machines
  TART and CART both improve with OMTC), so if someone -has- seen this cause
  a significant performance regression in some sort of interaction, do let
  us know.
 
 Have you tried to test those interactions on the same Talos machines
 that the CART regressions happened on?  I think that would definitively
 answer the question of whether these regressions affect an interaction
 we care about.
 
 (Also, out of curiosity, what is the list of those interactions?)
 
 Cheers,
 Ehsan

We have, but it should be noted CART does some special things I believe to draw 
'as fast as possible', so even a 40% regression, could still be 'fast enough' 
and we still wouldn't see an affect we cared about.

As I said, I didn't look at CART specifically but more at TART. One interaction 
that was particularly bad there in the numbers, was 'tab-close' that looked 
fine to me on the machines I looked at, but it probably deserves some specific 
attention on some other, slower machines.

Thanks!

Bas
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: OMTC on Windows

2014-05-22 Thread Bas Schouten
Hi Girish,

This sounds like bug 1012213. We're aware of this bug and are working on it!

Best regards,
Bas

- Original Message -
From: Girish Sharma scrapmachi...@gmail.com
To: Bas Schouten bschou...@mozilla.com, mozilla.dev.platform group 
dev-platform@lists.mozilla.org, dev-tech-...@lists.mozilla.org, 
release-drivers release-driv...@mozilla.org
Sent: Thursday, May 22, 2014 8:15:18 PM
Subject: Re: OMTC on Windows

I don't know if everyone is noticing this or not, but I am noticing a lot
of misplaced paint blocks while scrolling/animation etc. Sometimes even the
complete tab won't refresh on a tab change.


On Thu, May 22, 2014 at 8:26 PM, Bas Schouten bschou...@mozilla.com wrote:





 - Original Message -
  From: Ehsan Akhgari ehsan.akhg...@gmail.com
  To: Bas Schouten bschou...@mozilla.com, Gijs Kruitbosch 
 gijskruitbo...@gmail.com
  Cc: Gavin Sharp ga...@gavinsharp.com, dev-tech-...@lists.mozilla.org,
 mozilla.dev.platform group
  dev-platform@lists.mozilla.org, release-drivers 
 release-driv...@mozilla.org
  Sent: Thursday, May 22, 2014 12:56:26 PM
  Subject: Re: OMTC on Windows
 
  On 2014-05-22, 5:18 AM, Bas Schouten wrote:
   The focus should, in my opinion be, what has actually been affected by
 this
   in a way that it has a strong, negative impact on user experience.
   Considering the scope of this change I am certain those things exist
 and
   they will need to be fixed. Perhaps the CART regression -is- a sign of
   some real unacceptable perceived performance, I'm not ruling that out,
 but
   we have not identified an interaction which significantly regressed.
 This
   is all extremely hardware dependent though (i.e. on most of my machines
   TART and CART both improve with OMTC), so if someone -has- seen this
 cause
   a significant performance regression in some sort of interaction, do
 let
   us know.
 
  Have you tried to test those interactions on the same Talos machines
  that the CART regressions happened on?  I think that would definitively
  answer the question of whether these regressions affect an interaction
  we care about.
 
  (Also, out of curiosity, what is the list of those interactions?)
 
  Cheers,
  Ehsan

 We have, but it should be noted CART does some special things I believe to
 draw 'as fast as possible', so even a 40% regression, could still be 'fast
 enough' and we still wouldn't see an affect we cared about.

 As I said, I didn't look at CART specifically but more at TART. One
 interaction that was particularly bad there in the numbers, was 'tab-close'
 that looked fine to me on the machines I looked at, but it probably
 deserves some specific attention on some other, slower machines.

 Thanks!

 Bas
 ___
 dev-platform mailing list
 dev-platform@lists.mozilla.org
 https://lists.mozilla.org/listinfo/dev-platform




-- 
Girish Sharma
B.Tech(H), Civil Engineering,
Indian Institute of Technology, Kharagpur
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


OMTC on Windows

2014-05-18 Thread Bas Schouten
Hey all,

After quite a lot of waiting we've switched on OMTC on Windows by default today 
(bug 899785). This is a great move towards moving all our platforms onto OMTC 
(only linux is left now), and will allow us to remove a lot of code that we've 
currently been duplicating. Furthermore it puts us on track for enabling other 
features on desktop like APZ, off main thread animations and other improvements.

Having said that we realize that what we've currently landed and turned on is 
not completely bug free. There's several bugs still open (some more serious 
than others) which we will be addressing in the coming weeks, hopefully before 
the merge to Aurora. The main reason we've switched it on now is that we want 
to get as much data as possible from the nightly channel and our nightly user 
base before the aurora merge, as well as wanting to prevent any new regressions 
from creeping in while we fix the remaining problems. This was extensively 
discussed both internally in the graphics team and externally with other people 
and we believe we're at a point now where things are sufficiently stabilized 
for our nightly audience. OMTC is enabled and disabled with a single pref so if 
unforeseen, serious consequences occur we can disable it quickly at any stage. 
We will inevitably find new bugs in the coming weeks, please link any bugs you 
happen to come across to bug 899785, if anything se
 ems very serious, please let us know, we'll attempt to come up with a solution 
on the short-term rather than disabling OMTC and reducing the amount of 
feedback we get.

There's also some important notes to make on performance, which we expect to be 
reported by our automated systems:

- Bug 1000640 is about WebGL. Currently OMTC regresses WebGL performance 
considerably, patches to fix this are underway and this should be fixed on the 
very short term.

- Several of the Talos test suite numbers will change considerably (especially 
with Direct2D enabled), this means Tscroll for example will improve by ~25%, 
but tart will regress by ~20%, and several other suites will regress as well. 
We've investigated this extensively and we believe the majority of these 
regressions are due to the nature of OMTC and the fact that we have to do more 
work. We see no value in holding off OMTC because of these regressions as we'll 
have to go there anyway. Once the last correctness and stability problems are 
all solved we will go back to trying to find ways to get back some of the 
performance regressions. We're also planning to move to a system more like 
tiling in desktop, which will change the performance characteristics 
significantly again, so we don't want to sink too much time into optimizing the 
current situation.

- Memory numbers will increase somewhat, this is unavoidable, there's several 
steps which have to be taken when doing off main thread compositing (like 
double-buffering), which inherently use more memory.

- On a brighter note: Async video is also enabled by these patches. This means 
that when the main thread is busy churning JavaScript, instead of stuttering 
your video should now happily continue playing!

- Also there's some indications that there's a subjective increase in scrolling 
performance as well.


If you have any questions please feel free to reach out to myself or other 
members of the graphics team!


Bas
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: OMTC on Windows

2014-05-18 Thread Bas Schouten
Hi Gavin,

There have been several e-mails on different lists, and some communication on 
some bugs. Sadly the story is at this point not anywhere in a condensed form, 
but I will try to highlight a couple of core points, some of these will be 
updated further as the investigation continues. The official bug is bug 946567 
but the numbers and the discussion there are far outdated (there's no 400% 
regression ;)):

- What OMTC does to tart scores differs wildly per machine, on some machines we 
saw up to 10% improvements, on others up to 20% regressions. There also seems 
to be somewhat more of a regression on Win7 than there is on Win8. What the 
average is for our users is very hard to say, frankly I have no idea.
- One core cause of the regression is that we're now dealing with two D3D 
devices when using Direct2D since we're doing D2D drawing on one thread, and 
D3D11 composition on the other. This means we have DXGI locking overhead to 
synchronize the two. This is unavoidable.
- Another cause is that we're now having two surfaces in order to do double 
buffering, this means we need to initialize more resources when new layers come 
into play. This again, is unavoidable.
- Yet another cause is that for some tests we composite 'ASAP' to get 
interesting numbers, but this causes some contention scenario's which are less 
likely to occur in real-life usage. Since the double buffer might copy the area 
validated in the last frame from the front buffer to the backbuffer in order to 
prevent having to redraw much more. If the compositor is compositing all the 
time this can block the main thread's rasterization. I have some ideas on how 
to improve this, but I don't know how much they'll help TART, in any case, some 
cost here will be unavoidable as a natural additional consequence of double 
buffering.
- The TART number story is complicated, sometimes it's hard to know what 
exactly they do, and don't measure (which might be different with and without 
OMTC) and how that affects practical performance. I've been told this by Avi 
and it matches my practical experience with the numbers. I don't know the exact 
reasons and Avi is probably a better person to talk about this than I am :-).

These are the core reasons that we were able to identify from profiling. Other 
than that the things I said in my previous e-mail still apply. We believe we're 
offering significant UX improvements with async video and are enabling more 
significant improvements in the future. Once we've fixed the obvious problems 
we will continue to see if there's something that can be done, either through 
tiling or through other improvements, particularly in the last point I 
mentioned there might be some, not 'too' complex things we can do to offer some 
small improvement.

If we want to have a more detailed discussion we should probably pick a list to 
have this on and try not to spam people too much :-).

Bas

- Original Message -
From: Gavin Sharp ga...@gavinsharp.com
To: Bas Schouten bschou...@mozilla.com
Cc: dev-tree-management dev-tree-managem...@lists.mozilla.org, 
dev-tech-...@lists.mozilla.org, release-drivers 
release-driv...@mozilla.org, mozilla.dev.platform group 
dev-platform@lists.mozilla.org
Sent: Sunday, May 18, 2014 6:23:58 PM
Subject: Re: OMTC on Windows

 but tart will regress by ~20%, and several other suites will regress as well.
 We've investigated this extensively and we believe the majority of these
 regressions are due to the nature of OMTC and the fact that we have to do
 more work.

Where can I read more about the TART investigations? I'd like to
understand why it is seen as inevitable, and get some of the details
of the regression. OMTC is important, and I'm excited to see it land
on Windows, but the Firefox and Performance teams have just come off a
months-long effort to make significant wins in TART, and the thought
of taking a 20% regression (huge compared to some of the improvements
we fought for) is pretty disheartening.

Gavin

On Sun, May 18, 2014 at 12:16 AM, Bas Schouten bschou...@mozilla.com wrote:
 Hey all,

 After quite a lot of waiting we've switched on OMTC on Windows by default 
 today (bug 899785). This is a great move towards moving all our platforms 
 onto OMTC (only linux is left now), and will allow us to remove a lot of code 
 that we've currently been duplicating. Furthermore it puts us on track for 
 enabling other features on desktop like APZ, off main thread animations and 
 other improvements.

 Having said that we realize that what we've currently landed and turned on is 
 not completely bug free. There's several bugs still open (some more serious 
 than others) which we will be addressing in the coming weeks, hopefully 
 before the merge to Aurora. The main reason we've switched it on now is that 
 we want to get as much data as possible from the nightly channel and our 
 nightly user base before the aurora merge, as well as wanting to prevent any 
 new regressions from

Re: OMTC on Windows

2014-05-18 Thread Bas Schouten
Hi Armen,

You -could- be seeing all kinds of bugs, but the most likely things I'd be 
expecting is things while window shapes and such are updating (i.e. resizing, 
pop-up windows, awesomebar, etc.) particularly since those type of short-lived 
compositors are not typical on mobile devices where we've been using OMTC for 
the longest, as well as being very platform-specific in their behavior.

Thanks!
Bas

- Original Message -
From: Armen Zambrano G. arme...@mozilla.com
To: dev-platform@lists.mozilla.org
Sent: Sunday, May 18, 2014 5:50:50 PM
Subject: Re: OMTC on Windows

What kind of bugs could we expect seeing?
Any place you would like us to put focus on testing?

Thanks for all the hard work to get this in.

cheers,
Armen

On 2014-05-18, 3:16 AM, Bas Schouten wrote:
 Hey all,
 
 After quite a lot of waiting we've switched on OMTC on Windows by default 
 today (bug 899785). This is a great move towards moving all our platforms 
 onto OMTC (only linux is left now), and will allow us to remove a lot of code 
 that we've currently been duplicating. Furthermore it puts us on track for 
 enabling other features on desktop like APZ, off main thread animations and 
 other improvements.
 
 Having said that we realize that what we've currently landed and turned on is 
 not completely bug free. There's several bugs still open (some more serious 
 than others) which we will be addressing in the coming weeks, hopefully 
 before the merge to Aurora. The main reason we've switched it on now is that 
 we want to get as much data as possible from the nightly channel and our 
 nightly user base before the aurora merge, as well as wanting to prevent any 
 new regressions from creeping in while we fix the remaining problems. This 
 was extensively discussed both internally in the graphics team and externally 
 with other people and we believe we're at a point now where things are 
 sufficiently stabilized for our nightly audience. OMTC is enabled and 
 disabled with a single pref so if unforeseen, serious consequences occur we 
 can disable it quickly at any stage. We will inevitably find new bugs in the 
 coming weeks, please link any bugs you happen to come across to bug 899785, 
 if anything 
 seems ver
y serious, please let us know, we'll attempt to come up with a solution on the 
short-term rather than disabling OMTC and reducing the amount of feedback we 
get.
 
 There's also some important notes to make on performance, which we expect to 
 be reported by our automated systems:
 
 - Bug 1000640 is about WebGL. Currently OMTC regresses WebGL performance 
 considerably, patches to fix this are underway and this should be fixed on 
 the very short term.
 
 - Several of the Talos test suite numbers will change considerably 
 (especially with Direct2D enabled), this means Tscroll for example will 
 improve by ~25%, but tart will regress by ~20%, and several other suites will 
 regress as well. We've investigated this extensively and we believe the 
 majority of these regressions are due to the nature of OMTC and the fact that 
 we have to do more work. We see no value in holding off OMTC because of these 
 regressions as we'll have to go there anyway. Once the last correctness and 
 stability problems are all solved we will go back to trying to find ways to 
 get back some of the performance regressions. We're also planning to move to 
 a system more like tiling in desktop, which will change the performance 
 characteristics significantly again, so we don't want to sink too much time 
 into optimizing the current situation.
 
 - Memory numbers will increase somewhat, this is unavoidable, there's several 
 steps which have to be taken when doing off main thread compositing (like 
 double-buffering), which inherently use more memory.
 
 - On a brighter note: Async video is also enabled by these patches. This 
 means that when the main thread is busy churning JavaScript, instead of 
 stuttering your video should now happily continue playing!
 
 - Also there's some indications that there's a subjective increase in 
 scrolling performance as well.
 
 
 If you have any questions please feel free to reach out to myself or other 
 members of the graphics team!
 
 
 Bas
 


-- 
Zambrano Gasparnian, Armen (armenzg)
Mozilla Senior Release Engineer
https://mozillians.org/en-US/u/armenzg/
http://armenzg.blogspot.ca
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Reacting more strongly to low-memory situations in Firefox 25

2013-11-28 Thread Bas Schouten

- Original Message -
 From: Bas Schouten bschou...@mozilla.com
 To: dev-platform@lists.mozilla.org
 Cc: David Major dma...@mozilla.com, Nathan Froyd froy...@mozilla.com, 
 Firefox Dev firefox-...@mozilla.org
 Sent: Tuesday, November 26, 2013 1:15:44 AM
 Subject: Re: Reacting more strongly to low-memory situations in Firefox 25
 
 
 - Original Message -
  From: Benjamin Smedberg benja...@smedbergs.us
  To: dev-platform@lists.mozilla.org, Bas Schouten bschou...@mozilla.com,
  David Major dma...@mozilla.com,
  Nathan Froyd froy...@mozilla.com, Firefox Dev
  firefox-...@mozilla.org
  Sent: Monday, November 25, 2013 5:02:50 PM
  Subject: Reacting more strongly to low-memory situations in Firefox 25
  

...

  
  == Graphics Solutions ==
  
  The issues reported in bug 930797 at least appear to be related to HTML5
  video rendering. The STR aren't precise, but it seems that we should
  try and understand and fix the issue reported by that user. Disabling
  hardware acceleration does not appear to help.
  

...

 
 For what it's worth, just to add some info to this, in my own experience on
 my machines in most cases Firefox seems to climb to about 1.1-1.3 GB of
 memory usage fairly quickly (i.e.  2 days of keeping it open), and sort of
 stabilize around that number. Usually when I do an about memory in this case
 my memory reports about 500 MB+ in JS, a surprising amount (150 MB) in VRAM
 usage for DrawTargets (this would be in our address space on the affected
 intel machines), we should investigate the latter. This is usually with
 about 20 tabs open.

I've filed a bug for the latter part of this (the higher than expected 
DrawTarget memory usage), bug 944562. I'll look into it there. Although I don't 
think the number's high enough to cause a lot of trouble. I don't understand it 
and would like to.

Best regards,
Bas
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Reacting more strongly to low-memory situations in Firefox 25

2013-11-25 Thread Bas Schouten




- Original Message -
 From: Benjamin Smedberg benja...@smedbergs.us
 To: dev-platform@lists.mozilla.org, Bas Schouten bschou...@mozilla.com, 
 David Major dma...@mozilla.com,
 Nathan Froyd froy...@mozilla.com, Firefox Dev firefox-...@mozilla.org
 Sent: Monday, November 25, 2013 5:02:50 PM
 Subject: Reacting more strongly to low-memory situations in Firefox 25
 
 
 Unfortunately, often when we are out of memory crash reports come back
 as empty minidumps (because the crash reporter has to allocation memory
 and/or VM space to create minidumps). We believe that most of the
 empty-minidump crashes present on crash-stats are in fact also
 out-of-memory crashes.
 
 I've been creating reports about OOM crashes using crash-stats and found
 some startling data:
 Looking just at the Windows crashes from last Friday (22-Nov):
 * probably not OOM: 91565
 * probably OOM: 57841
 * unknown (not enough data because they are running an old version of
 Windows that doesn't report VM information in crash reports): 150874
 
 The criterion for probably OOM are:
 * Has an OOMAnnotationSize marking meaning jemalloc aborted an
 infallible allocator
 * Has ABORT: OOM in the app notes meaning XPCOM aborted in infallible
 string/hashtable/array code
 * Has 50MB of contiguous free VM space
 
 This data seems to indicate that almost 40% of our Firefox crashes are
 due to OOM conditions.
 
 Because one of the long-term possibilities discussed for solving this
 issue is releasing a 64-bit version of Firefox, I additionally broke
 down the OOM crashes into users running a 32-bit version of Windows
 and users running a 64-bit version of Windows:
 
 OOM,win64,15744
 OOM,win32,42097
 
 I did this by checking the TotalVirtualMemory annotation in the crash
 report: if it reports 4G of TotalVirtualMemory, then the user has a
 64-bit Windows, and if it reports either 2G or 3G, the user is running a
 32-bit Windows. So I do not expect that doing Firefox for win64 will
 help users who are already experiencing memory issues, although it may
 well help new users and users who are running memory-intensive
 applications such as games.

I'm a little confused, when I force OOM my firefox build on 64-bit windows it 
-definitely- goes down before it reaches more than 3GB of working set. Am I 
missing something here?

 
 Scripts for this analysis at
 https://github.com/mozilla/jydoop/blob/master/scripts/oom-classifier.py
 if you want to see what it's doing.
 
 = Next Steps =
 
 As far as I can tell, there are several basic problems that we should be
 tackling. For now, I'm going to brainstorm some ideas and hope that
 people will react or take of these items.
 

...

 
 == Graphics Solutions ==
 
 The issues reported in bug 930797 at least appear to be related to HTML5
 video rendering. The STR aren't precise, but it seems that we should
 try and understand and fix the issue reported by that user. Disabling
 hardware acceleration does not appear to help.
 
 Bas has a bunch of information in bug 859955 about degenerate behavior
 of graphics drivers: they often map textures into the Firefox process,
 and sometimes cache the latest N textures (N=200 in one test) no matter
 what the texture size is. I have a feeling that we need to do something
 here, but it's not clear what. Perhaps it's driver-specific workarounds,
 or blacklisting old driver versions, or working with driver vendors to
 have better behavior.

I should highlight something here, caching the last N textures is only 
occurring in drivers which do -not- map into your address space as far as I 
have see in my testing. Intel stock drivers seem to map into your address 
space, but do -not- seem to do any caching. The most likely cause of the OOM 
here is simply that currently, we keep both the texture, and a RAM copy around 
of any image in our image cache that has been drawn. This means for users using 
Direct2D with these drivers an image will use twice as much address space as 
for users using software rendering. We should probably alter imagelib to 
discard the RAM copy when having hardware acceleration, and in that case actual 
address space usage should be the same for users with, and without hardware 
acceleration.

For what it's worth, just to add some info to this, in my own experience on my 
machines in most cases Firefox seems to climb to about 1.1-1.3 GB of memory 
usage fairly quickly (i.e.  2 days of keeping it open), and sort of stabilize 
around that number. Usually when I do an about memory in this case my memory 
reports about 500 MB+ in JS, a surprising amount (150 MB) in VRAM usage for 
DrawTargets (this would be in our address space on the affected intel 
machines), we should investigate the latter. This is usually with about 20 tabs 
open.

Bas
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: vsync proposal

2013-08-15 Thread Bas Schouten




- Original Message -
 From: Robert O'Callahan rob...@ocallahan.org
 To: Bas Schouten bschou...@mozilla.com
 Cc: Jeff Muizelaar jmuizel...@mozilla.com, 
 dev-platform@lists.mozilla.org, Vladimir Vukicevic
 vladi...@mozilla.com, avih...@yahoo.com
 Sent: Wednesday, August 14, 2013 9:36:15 PM
 Subject: Re: vsync proposal
 
 On Wed, Aug 14, 2013 at 9:39 PM, Bas Schouten bschou...@mozilla.com wrote:
 
   From: Robert O'Callahan rob...@ocallahan.org
   That would be good in some ways, but it doesn't handle off-main-thread
   animation when the main thread's drawing is late (e.g. because the main
   thread is stuck doing something else). For that we must have a way to
   control composition based on VBlank signals that doesn't involve the main
   thread.
 
  Right, I'm saying you dispatch the VBlank events to any thread that needs
  to do things on VBlank, so you might -also- dispatch it to any thread that
  controls async animations (even if this is the compositor thread), I simply
  wouldn't put this 'in between' the VBlank event and the main thread.
 
 
 OK. Depending on what your exact proposal is, that could cause races
 between layer-tree updates triggered by main-thread requestAnimationFrame
 triggered by a VBlank event, and other compositor-thread activity triggered
 by the same VBlank event.

This can relatively easily solved if we want to, but it does indeed require a 
little more care.

  Nor do I really think in general where we tick the refreshdriver should be
  affected here. I think we simply want this low-latency composition to be
  directly event driven (i.e. user-input).
 
 
 Simply repainting and recompositing in response to every input event can
 easily lead to overpainting, especially if you include mouse movement.

Possibly, you could limit this to some extent, or more importantly when a user 
is actively giving input which affect the layer tree (panning/zooming) it might 
be okay to overdraw and consume a little more power and that might actually be 
what you want in order to optimize the user experience by minimizing latency. 
I'm not sure that's true, but it could very well be.

  I also think the 'vblank event handler' should be completely left out of
  of this, except maybe to schedule the timing for the composition (since
  this composition will be driven by other events).
 
 
 I'm not sure I understand you correctly.
 
 Can you please produce a detailed proposal?

I'm off today but I'll try my best to have something more concrete by the 
beginning of next week.

Bas
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: vsync proposal

2013-08-14 Thread Bas Schouten

- Original Message -
 From: Robert O'Callahan rob...@ocallahan.org
 To: Bas Schouten bschou...@mozilla.com
 Cc: Jeff Muizelaar jmuizel...@mozilla.com, 
 dev-platform@lists.mozilla.org, Vladimir Vukicevic
 vladi...@mozilla.com, avih...@yahoo.com
 Sent: Wednesday, August 14, 2013 1:25:03 AM
 Subject: Re: vsync proposal
 
 On Wed, Aug 14, 2013 at 12:13 PM, Bas Schouten bschou...@mozilla.comwrote:
 
  Since you want composition to occur whenever drawing has occurred, I don't
  really think it should really be what's working on doing any processing for
  the vblank event. The VBlank event should just fire, indiscriminately
  whenever VBlank occurs. I believe we should then consume that event on
  whatever thread is actually doing drawing which might want to know about
  this (a user input thread? the main thread?) and these should then decide
  when to do their drawing and if that warrants a new composition. That way
  you could have, just after vblank, all your scheduled drawing be done, and
  a composition scheduled. But then if right before the next vblank a
  panning/zooming event comes in you can still process that and present a new
  frame to minimize latency (if desired).
 
 
 That would be good in some ways, but it doesn't handle off-main-thread
 animation when the main thread's drawing is late (e.g. because the main
 thread is stuck doing something else). For that we must have a way to
 control composition based on VBlank signals that doesn't involve the main
 thread.

Right, I'm saying you dispatch the VBlank events to any thread that needs to do 
things on VBlank, so you might -also- dispatch it to any thread that controls 
async animations (even if this is the compositor thread), I simply wouldn't put 
this 'in between' the VBlank event and the main thread.

  What you could also do is do all your main thread drawing and processing
  rAF things just after vblank, since they'll likely be somewhat time
  consuming, and schedule your composition only for example 5 ms before
  VBlank (since that will likely be fast). You could then make some
  adjustments to the layer tree through the APZC for user input later in the
  frame, and still have those taken into account for composition, that would
  give you a minimal input latency without wasted work and still starting the
  content drawing required as early as possible giving it maximum opportunity
  to make the next frame. This may be a little bit too complicated for a
  first implementation, but I wanted to throw it out there as a suggestion as
  well.
 
 
 That sounds exactly like the Lowering Latency extension in the wiki page
 (if we treat everything as a low latency window). If you agree, maybe we
 should just do this.

Not completely, first of all I don't think as suggested in the proposal this 
should be done on a per-window basis. Nor do I really think in general where we 
tick the refreshdriver should be affected here. I think we simply want this 
low-latency composition to be directly event driven (i.e. user-input). I also 
think the 'vblank event handler' should be completely left out of of this, 
except maybe to schedule the timing for the composition (since this composition 
will be driven by other events).

Best regards,
Bas
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: vsync proposal

2013-08-13 Thread Bas Schouten
- Original Message -
 From: Robert O'Callahan rob...@ocallahan.org
 To: Jeff Muizelaar jmuizel...@mozilla.com
 Cc: dev-platform@lists.mozilla.org, Vladimir Vukicevic 
 vladi...@mozilla.com, avih...@yahoo.com, Bas Schouten
 bschou...@mozilla.com
 Sent: Tuesday, August 13, 2013 10:34:38 PM
 Subject: Re: vsync proposal

  A couple things that are not clear to me from this proposal:
   - when the vsync event is sent?
 
 
 Depends on the platform. I believe on Windows we can call DwmFlush on a
 helper thread and fire it when that returns.

Calling DwmFlush is bad. Calling 
http://msdn.microsoft.com/en-us/library/windows/desktop/bb174559%28v=vs.85%29.aspx
 is better.

 
  - how does it deal with a blocking swapbuffers()?
 
 
 Blocking swapbuffers isn't really compatible with having multiple windows
 on one compositor thread. If we want to move each window compositor to its
 own thread and keep blocking on swapbuffers, then we'll have to revise this
 proposal. Do we need to do that?

I don't think we are ever forced to have a blocking SwapBuffers.

All in all I have some concerns with the current plan. I believe the basics are 
solid, having a thread (or some other method) generate Vblank events is a good 
thing. I also believe using that to drive animations and some other things is a 
good idea. I think that should be decoupled from the Compositor though. I've 
discussed this a little on IRC and we've talked a little about this in the 
graphics meeting, one concern in particular I have with this idea is the idea 
that you have 'low latency' windows and 'high latency' windows, I think that's 
not true. Rather, I think there's drawing where the latency doesn't really 
matter, and drawing where it does. Here's some quick ideas I had about things 
(very rough around the edges still):

First let's conclude we're not trying to do a vblank synchronized present, so 
we're not really vsyncing here (the preventing tearing discussion is completely 
separated as far as I can tell), we merely want to use the vblank signal to 
determine if a frame has been presented to the monitor. Take into account I 
have little idea of how the RefreshDriver currently works.

Then what you basically have is two sorts of drawing:
- Drawing related to user input (panning/zooming/etc), where ideally you need 
minimal latency
- Drawing related to things we know in advance, video, animations, etc.

Then there's requestAnimationFrame, which I guess is kind of special, I don't 
know enough about it to have a good idea when that should happen, I suppose 
vblank is as good a time as any?

Since you want composition to occur whenever drawing has occurred, I don't 
really think it should really be what's working on doing any processing for the 
vblank event. The VBlank event should just fire, indiscriminately whenever 
VBlank occurs. I believe we should then consume that event on whatever thread 
is actually doing drawing which might want to know about this (a user input 
thread? the main thread?) and these should then decide when to do their drawing 
and if that warrants a new composition. That way you could have, just after 
vblank, all your scheduled drawing be done, and a composition scheduled. But 
then if right before the next vblank a panning/zooming event comes in you can 
still process that and present a new frame to minimize latency (if desired).

What you could also do is do all your main thread drawing and processing rAF 
things just after vblank, since they'll likely be somewhat time consuming, and 
schedule your composition only for example 5 ms before VBlank (since that will 
likely be fast). You could then make some adjustments to the layer tree through 
the APZC for user input later in the frame, and still have those taken into 
account for composition, that would give you a minimal input latency without 
wasted work and still starting the content drawing required as early as 
possible giving it maximum opportunity to make the next frame. This may be a 
little bit too complicated for a first implementation, but I wanted to throw it 
out there as a suggestion as well.

Bas
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Exposing the CSS/SVG Filters as Canvas API's

2013-08-08 Thread Bas Schouten
Just to provide something of an update here. Let me first correct something 
from the original e-mail, SVG does not render on the Skia backend right now, 
but rather on thebes. It simply has its own code to do these sorts of filters.

Over the last couple of weeks we've also been working on adding these filters 
to Moz2D. We now have software implementations on all backends (basically our 
SVG filter code migrated to work inside Moz2D) and hardware implementations for 
the Direct2D 1.1 backend which should be landing on central soon. Direct2D 1.0 
users would technically speaking be the only tricky thing, the filter 
implementation there has been done so that -if- Direct2D 1.1 is available on 
the system, hardware accelerated filters will be used, if it's not though 
(Windows 7 pre platform-update or Windows Vista), those users would be facing 
readback. Since the long-term goal is to move all Direct2D users to Direct2D 
1.1 I don't think this will be a large problem though.

Best regards,
Bas

- Original Message -
From: Jet Villegas j...@mozilla.com
To: Jeff Muizelaar jmuizel...@mozilla.com, mozilla.dev.platform group 
dev-platform@lists.mozilla.org
Cc: Tobias Schneider schnei...@jancona.com, Benoit Jacob 
bja...@mozilla.com, Boris Zbarsky bzbar...@mozilla.com, L. David Baron 
dba...@dbaron.org, Robert O'Callahan rocalla...@mozilla.com, Jonas 
Sicking sick...@mozilla.com, Bas Schouten bschou...@mozilla.com, 
Michael Bebenita mbeben...@mozilla.com, Yury Delendik 
ydelen...@mozilla.com, Claus Wahlers cwahl...@mozilla.com, Jeff Dyer 
jeffd...@acm.org, Till Schneidereit tschneider...@mozilla.com, Markus 
Stange msta...@mozilla.com
Sent: Thursday, August 8, 2013 7:39:37 PM
Subject: Exposing the CSS/SVG Filters as Canvas API's

Shumway team still needs to implement filter effects available in the Flash 
Player. Ideally, fast filters can be made available to all Canvas programs. Now 
that we've got a shared filter pipeline with SVG and CSS, can we surface the 
same filters as a Canvas API?

I'm attaching our last e-mail thread on the subject for context.

--Jet

- Original Message -
From: Jeff Muizelaar jmuizel...@mozilla.com
To: Tobias Schneider schnei...@jancona.com
Cc: Jet Villegas j...@mozilla.com, Benoit Jacob bja...@mozilla.com, 
Joe Drew j...@mozilla.com, Boris Zbarsky bzbar...@mozilla.com, L. 
David Baron dba...@dbaron.org, Robert O'Callahan rocalla...@mozilla.com, 
Jonas Sicking sick...@mozilla.com, Bas Schouten bschou...@mozilla.com
Sent: Friday, July 20, 2012 8:17:44 AM
Subject: Re: Native implementation of Flashs ColorMatrix filter

This is not that easy for us to do. The only Azure backend that makes this easy 
is Skia. None of CoreGraphics, Cairo or Direct2D support this functionality.

We could do hardware/software implementations on top of those APIs as we do 
with SVG but I'm not in a huge rush to do this work.

-Jeff

On 2012-07-19, at 9:20 AM, Jet Villegas wrote:

 Here's a request from the Shumway team re: Canvas2D graphics. Can we surface 
 this API?

 -- Jet

 - Forwarded Message -
 From: Tobias Schneider schnei...@jancona.com
 To: Jet Villegas j...@mozilla.com
 Sent: Thursday, July 19, 2012 8:40:52 AM
 Subject: Native implementation of Flashs ColorMatrix filter

 Hi Jet,

 as already discussed in some meetings, it would be big performance benefit 
 for Shumway if we could implement Flashs ColorMatrix filter natively as an 
 extension to the Canvas API. ColorMatrix filters (or more the 
 ColorTransformation, which can be easily converted to a ColorMatrix) are used 
 really often in Swiff files, e.g. there is no way no change a display objects 
 opacity except of using a color transformation (or via script of course), so 
 its really a highly needed feature for Shumway. And doing bitmap filter 
 operations pixel wise with plain Javascript is just too slow to archive a 
 decent frame rate (especially since Canvas is hardware accelerated, which 
 makes using getImageData a pain in the ass).

 You can find out more about the ColorMatirx filter in the SWF spec or here: 
 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filters/ColorMatrixFilter.html

 Firefox already implements a ColorMatrix filter in its SVG implementation, 
 but since SVG is currently using the Skaia graphics backend, I'm not sure if 
 its possible to use them internally within the Canvas API, which is based on 
 Azure/Cairo.

 So I digged a little bit deeper into Azure to see where it could be 
 implemented, and i think the way we blur pixels to draw shadows is kinda 
 similar. So maybe we can reuse a lot of that for additional bitmap filters.

 The Canvas API for it can look pretty simple, we just need a way to assign 
 the ColorMatrix values as an array to a context property like so:

 ctx.mozColorMatrix = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 
 1, 0];

 I'm pretty sure that once we've created the infrastructure to support bitmap 
 filters on a Canvas, its

Re: On indirect feedback

2013-08-05 Thread Bas Schouten
Although I agree fully that by far the best way of offering feedback is by 
talking to that person directly. I do think we have to face the fact that at 
this point in time a significant amount of people find it very hard to speak to 
people directly about things. Even when their intention is to provide 
constructive criticism, they will often rather avoid the confrontation for fear 
of creating grudges, damaging their reputation, their career, etc. It also 
simply takes some amount of training and social skills to deliver criticism in 
such a way that the target of that feedback will perceive it as the intent to 
improve them, rather than an attempt to simply criticize them or even bring 
them down.

On the other hand I think it's important for everyone I think to work on both 
their ability and willingness to -receive- feedback, as well as to provide it. 
An environment where people feel comfortable talking to other people with their 
feedback will only really come about when people on the receiving end of 
feedback keep an open-mind to that feedback and treat it as an honest attempt 
from the other person to help them improve themselves. In that sense it's a 
shame we don't have a 360-degree feedback process in affect with Mozilla at the 
moment, I firmly believe that can positively contribute to creating an 
atmosphere where providing your co-workers with feedback on the things they are 
doing and how they're doing them is simply part of day-to-day operations.

In the end as long as there's people uncomfortable/afraid/unable to share their 
feedback directly, it would still be a good thing if they provide that feedback 
to their 'leaders' (managers/module owners/etc.) as they will hopefully be able 
to take that feedback and use it in a meaningful way to improve others, this is 
part of their job after all. I think this form of indirect feedback is much 
preferred over building up long term irritations or simply spewing negative 
comments over the watercooler :-).

Just my two cents,
Bas

- Original Message -
From: Robert O'Callahan rob...@ocallahan.org
To: Brian Smith br...@briansmith.org
Cc: Mozilla Product Builds dev-bui...@lists.mozilla.org, dev-platform 
dev-platform@lists.mozilla.org, Gregory Szorc g...@mozilla.com
Sent: Saturday, August 3, 2013 1:28:39 PM
Subject: Re: On indirect feedback

On Sat, Aug 3, 2013 at 12:43 PM, Brian Smith br...@briansmith.org wrote:

 I think some people may interpret what you say in that last paragraph the
 opposite of how you intend. I am pretty sure you mean something like If
 somebody starts to complain to you about somebody else, then stop them and
 ask them to first talk to the person they were trying to complain about.


Yes, that's exactly what I mean. Thanks.

Rob
-- 
Jtehsauts  tshaei dS,o n Wohfy  Mdaon  yhoaus  eanuttehrotraiitny  eovni
le atrhtohu gthot sf oirng iyvoeu rs ihnesa.rt sS?o  Whhei csha iids  teoa
stiheer :p atroa lsyazye,d  'mYaonu,r  sGients  uapr,e  tfaokreg iyvoeunr,
'm aotr  atnod  sgaoy ,h o'mGee.t  uTph eann dt hwea lmka'n?  gBoutt  uIp
waanndt  wyeonut  thoo mken.o w  *
*
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Layers Refactoring Landing

2013-04-10 Thread Bas Schouten
Hey all,

Last night we've landed the layers refactoring. This was a very large patch 
that had to be landed in one go. At the moment we are aware (and not completely 
surprised), that the first couple of regressions due to the refactoring have 
been found. We are working very hard with the entire graphics team and several 
people from other teams helping us to address the issues as they come in.

We ask you all to bear with us as we try to figure out the problems that our 
test suites and internal testing didn't catch. Please reach out to us if you 
run into serious issues and don't back out straight away! If we cannot resolve 
the more blocking issues within a day or so we plan to take care of the backout 
ourselves.

Thanks in advance for your patience and understanding!

Bas
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Moz2D Repository Creation

2013-03-27 Thread Bas Schouten
Hi all,

Over the past year we've increased our dependencies on Moz2D (formerly known 
under the codename Azure), our new 2D rendering API. Currently we're using it 
for canvas drawing on all platforms and content drawing on Windows where using 
Direct2D, and in the near future we will be moving to using it for content on 
all platforms.

From the very beginning of Moz2D development we've taken care to make sure it 
can be built outside of the rest of Gecko, having only dependencies on several 
MFBT headers. This was done to reduce the barrier for external usage and 
development, we've since seen this benefit us for example in Servo using Moz2D 
as well. In addition to that it has helped development and bugfixing by having 
a much faster workflow for building/testing with which bugs could be located 
and fixes created.

Going forward we're expanding on that by ensuring the stand-alone builds and 
works on all platforms and becomes the defacto way of the 'first level' of 
testing when implementing new features or fixing bugs in Moz2D. In addition to 
that we're expanding on our existing stand-alone unittesting suite as well as 
adding a peformance testing suite, which will include microbenchmarking and 
support measuring performance on Moz2D drawing recordings (single-page 
recording support has just landed on mozilla-inbound).

When moving forward we have several goals for Moz2D when it comes to the 
workflow:

- Improve Moz2D development workflow by having faster turnaround time on builds 
and tests (both local and Try)
- Lower the barrier for external contributors, some people have already 
expressed the desire to work on potential backends we do not wish to invest in 
ourselves, but have been deterred by the complexity of the checkout/building 
process.
- Improve sharing between Servo/Gecko.
- Reduce load on our infrastructure by building and testing only Moz2D 
stand-alone when a change affects only Moz2D, both on regular builds and try.

As the next step in moving towards these goals and optimally supporting them 
the proposal is to move Moz2D into its own repository. We would use hg subrepos 
for this purpose, you can read more about this here 
(http://mercurial.selenic.com/wiki/Subrepository). The intention is that this 
will be done in such a way that the workflow for developers not involved in 
Moz2D development would essentially not change.

A more detailed description of the proposal and the workflows involved can be 
found here (https://wiki.mozilla.org/Platform/GFX/Moz2DSubrepository) for those 
interested in the details. Since we believe if we go through with this it would 
be the first time we use a true subrepository system for a component used in 
mozilla-central, we'd very much appreciate any thoughts or feedback people 
might have on the idea.

Best regards,
Bas
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Moz2D Repository Creation

2013-03-27 Thread Bas Schouten
Personally I don't care if we use Git or Mercurial, what I do feel fairly 
strongly about is that whatever we do for Moz2D runs on our own infrastructure. 
If that infrastructure supports git I have no issues with it being in git. 
Although I've done my testing with hg subrepos only. For what it's worth I 
personally find our mix of mercurial and git extremely disturbing, and this 
once again goes to show the amount of problems that come from such an 
architecture. I'd find it quite sad if the fact we're in this situation would 
block progress on this front.

As to subrepository functionality, they seem to work well for our purposes, 
it's true that some complexities arise if you would like to do certain 
operations across repository boundaries but I didn't see a lot of cases where 
we'd actually want that. For what it's worth, I've worked with SVN externals 
before and found them quite nice to work with. But I must admit my experience 
with hg subrepos is limited to the testing I did. I've heard stories that 
mercurial subrepos work a lot better than git submodules, however I have even 
less experience with the latter. One argument for hg subrepos is that their 
type of functionality is pretty much -exactly- what we want/need for a great 
experience. This could be true for git submodules as well, but I have no idea 
if it is.

Bas

- Original Message -
From: Justin Lebar justin.le...@gmail.com
To: Gregory Szorc g...@mozilla.com
Cc: Bas Schouten bschou...@mozilla.com, dev-platform 
dev-platform@lists.mozilla.org
Sent: Wednesday, March 27, 2013 10:06:56 PM
Subject: Re: Moz2D Repository Creation

 hg-git (the tool we use to synchronize Mercurial and Git repos) supports
 subrepos. Although, I'm not sure how well it works.

Well, we should definitely figure this out before we move forward with
this plan.

If the hg support for git repos is decent, that might be a better way
to go, since then we'd have one fewer repo we needed to mirror for
B2G's purposes.  Assuming that hg-git is happy with git submodules.
:)

 I haven't met many Git users who enjoy submodules, myself included.

Git submodules suck, but so does importing library code via cp, as we
do now.  :-/
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Moz2D Repository Creation

2013-03-27 Thread Bas Schouten
I would argue this is probably true. As I've talked to a developer from a large 
third party where the discussion of if they would try to adjust their work to 
Moz2D literally ended at: 'I have to check out -all- of firefox? How big is 
that 2 Gig or something?' I think it's certainly the largest practical and 
mental barrier.

Best regards,
Bas

- Original Message -
From: Robert O'Callahan rob...@ocallahan.org
To: Bas Schouten bschou...@mozilla.com
Cc: dev-platform dev-platform@lists.mozilla.org
Sent: Wednesday, March 27, 2013 10:14:35 PM
Subject: Re: Moz2D Repository Creation

On Thu, Mar 28, 2013 at 9:42 AM, Bas Schouten  bschou...@mozilla.com  wrote: 



- Improve Moz2D development workflow by having faster turnaround time on builds 
and tests (both local and Try) 
- Lower the barrier for external contributors, some people have already 
expressed the desire to work on potential backends we do not wish to invest in 
ourselves, but have been deterred by the complexity of the checkout/building 
process. 
- Improve sharing between Servo/Gecko. 
- Reduce load on our infrastructure by building and testing only Moz2D 
stand-alone when a change affects only Moz2D, both on regular builds and try. 


Seems to me that of those goals, only lower the barrier for external 
contributors actually *requires* Moz2D to be in a separate repository. Is that 
right? 

Rob 
-- 
Wrfhf pnyyrq gurz gbtrgure naq fnvq, “Lbh xabj gung gur ehyref bs gur Tragvyrf 
ybeq vg bire gurz, naq gurve uvtu bssvpvnyf rkrepvfr nhgubevgl bire gurz. Abg 
fb jvgu lbh. Vafgrnq, jubrire jnagf gb orpbzr terng nzbat lbh zhfg or lbhe 
freinag, naq jubrire jnagf gb or svefg zhfg or lbhe fynir — whfg nf gur Fba bs 
Zna qvq abg pbzr gb or freirq, ohg gb freir, naq gb tvir uvf yvsr nf n enafbz 
sbe znal.” [Znggurj 20:25-28] 
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Moz2D Repository Creation

2013-03-27 Thread Bas Schouten
Thanks a lot for thinking along here from the RelEng side of things!

- Original Message -
 From: Alex Keybl ake...@mozilla.com
 To: Bas Schouten bschou...@mozilla.com
 Cc: dev-platform dev-platform@lists.mozilla.org
 Sent: Wednesday, March 27, 2013 11:25:14 PM
 Subject: Re: Moz2D Repository Creation
 
 
 Can you clarify the main motivation behind using a subrepo over a
 Tier 1 dev branch like m-i or services-central? Mimicking what we
 already do elsewhere would have less process/infra change overhead,
 and my intuition tells me that per-checkin builds/tests could be
 configured specifically for that repo. Perhaps we should be focusing
 mostly on your point about  Improv[ing] sharing between
 Servo/Gecko though.

The main motivations would be:

- Reduced tree size (for clone/pull/update/etc.)
- Easier bisection within the specific Moz2D code.
- Cleaner merging system (i.e. rather than merging, it would just be a revision 
tag update in m-c)

 
 
 Assuming we move forward with a subrepo, a few thoughts:
 
 
 * Whatever the branching model becomes, it sounds like it'll end up
 being around merges. Just let us know what you'd like us to do at
 m-c-m-a and upon subsequent merges. No problem there.

Nothing should change for that, m-c - m-a would just take the currently tagged 
revision along with it, and that would remain the revision used. For 
upstreaming patches the process gets a tiny bit different, see also your point 
below this one. I've added some of my own thoughts to the wiki page.

 * We'll need to decide how to handle approvals - whether to gate at
 landing to a branched subrepo, or updating the changeset in the main
 repo. Just requires some discussion.
 * Somebody (engineer, sheriff) would need to make sure that after
 landing to a subrepo branch, a version of Firefox is marked as fixed
 once it the changeset starts being referenced from the main repo.

Yeah, this is an interesting point. The question is if it's defined fixed by 
being fixed on Moz2D or in Firefox, probably the latter is best.

 
 
 As for impact to QA and investigations, I agree that the change
 should be fairly minimal. Since we'd still like the help of
 contributors and QA in bisecting a day's worth of Moz2D changes, new
 documentation may be necessary.

Indeed, a day (or a week) worth of Moz2D changes will be a lot easier to bisect 
though! :-) And could even be done within m-c where you'd for example only have 
to rebuild gfx/2d and layout/media, as long as your bisection doesn't include 
API changes. This would be one of the advantages of the separation listed above.

 
 
 
 -Alex

Bas
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Minimizing Layers churn for refactoring

2013-01-31 Thread Bas Schouten
Hi all,

Over the last couple of years there were a lot of new additions and changes to 
the layers sytems which have caused the current implementation to become hard 
to maintain with a lot of code duplication. The graphics team has been working 
hard on re-designing part of the layers system, this also means refactoring a 
significant portion of the existing code. Since this means a lot of work this 
is being executed on the Graphics project branch.

As we are getting closer to completing the work (although completion is still 
some ways off), it's becoming increasingly difficult to merge work being done 
on mozilla-central. In light of the end-goal of having a layers system that's 
easier to amend and maintain as soon as possible we'd therefore like to ask 
everyone working on the platform to minimize work done on layers, and to make 
sure all patches going into this part of the code to receive explicit review 
from somebody on the graphics team.

If you have any questions or want to learn more about the refactoring feel free 
to contact myself or another member of the graphics team. You can find the 
refactoring work on https://hg.mozilla.org/projects/graphics.

Best regards,
Bas
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Gecko switched to use standard integer types

2012-08-23 Thread Bas Schouten
Is ptrdiff_t not portable? As far as I know it's part of the standard.

- Original Message -
From: Makoto Kato m_k...@ga2.so-net.ne.jp
To: dev-platform@lists.mozilla.org
Sent: Friday, August 24, 2012 1:30:39 AM
Subject: Re: Gecko switched to use standard integer types

How about PRUptrdiff?  Most cases can changes to uintptr_t.

On 2012/08/23 1:35, Ehsan Akhgari wrote:

 I just landed the patches in bug 579517 which switch all of the code in
 mozilla-central and comm-central [1] to use the standard integer types
 as opposed to NSPR integer types.  Here's what this means to you:

 * If you're a developer, this will most likely bitrot your patches.  You
 can use this script [2] in order to unbitrot your patches if you use
 mercurial queues.  Also, please get into the habit of using stdint types
 (such as int16_t and uint32_t) as opposed to NSPR numeric types (such as
 PRInt16 and PRUint32).

 * If you maintain a branch which merges against mozilla-central, you
 probably want to merge mozilla-central into it as soon as possible.
 There will probably be merge conflicts.  The easiest way to resolve them
 is to take your branch's version in the conflicts and then run the
 script that I used for the conversion again so that you make sure you're
 not adding more NSPR numeric type usages in your branch.

 * If you want to back out a patch which landed before this, there's
 probably a bunch of manual conflict resolution that you need to do.

 * If you talk to new Mozilla contributors regularly, you probably won't
 need to explain to them what these NSPR types are any more.  :-)

 * If you're not in any of the above categories, this work will probably
 not affect you.


 Cheers,
 Ehsan

 [1] (except for NSPR and NSS)
 [2] https://bugzilla.mozilla.org/attachment.cgi?id=650572
 [3] https://bugzilla.mozilla.org/attachment.cgi?id=653946

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform