Open Bug 1305341 (gem) Opened 4 years ago Updated 1 year ago

Port Gecko/Firefox to Yocto/OpenEmbedded

Categories

(Core :: General, enhancement)

ARM
Linux
enhancement
Not set
normal

Tracking

()

People

(Reporter: ashie, Unassigned)

References

(Depends on 3 open bugs, )

Details

(Whiteboard: [ele:1b])

Port Gecko/Firefox to Yocto (https://www.yoctoproject.org/) so that SoC vendors easily spread Gecko-based web browser/architecture to product vendors & final products.

The Yocto recipe of Firefox is already provided by OSSystems:

  https://github.com/OSSystems/meta-browser

But in most cases GPU acceleration wouldn't be enabled by this recipe. Since most product vendors will want to enable it, it would be nice if we provide the way to do it. Otherwise they wouldn't choose Gecko/Firefox, they will choose other architectures such as Chromium.

In fact some Japanese vendors are trying to use Gecko in their products by using Yocto, then comparing it with other architectures. So we Japanese community started the project to improve the recipe & share the information how to enable GPU acceleration and other Gecko's features such as WebRTC, WebGL and so on:

  https://github.com/mozilla-japan/gecko-embedded/wiki
  (Sorry, most of the pages are currently written in Japanese)

To enable these feature on various SoC, we will also have to improve Gecko/Firefox itself. For example certain SoC such as Renesas Electronics's RZ/G doesn't support X11, it only supports Wayland. So it would be nice if Gecko/Firefox supports Wayland.

This is the meta bug for this project.
Product: Firefox → Core
Depends on: wayland, 1215085
> For example certain SoC such as Renesas Electronics's RZ/G doesn't support X11, it only supports Wayland. 

Sorry, it's not correct.

It works also on X11. The problem is that it doesn't provide GLX or EGL enabled driver for X11.
So we have to port Gecko to Wayland if we want to enable GPU acceleration on it.
Since we can't support so many boards at this moment, we selected two boards as our first target:

* Renesas Electronics RZ/G1 series
* NXP (formerly known as Freescale) i.MX6 series

The reason why we choose these boards is that they are candidates for future products of some vendors we contacted. In other words, these boards are chosen by actual product vendors.

Although it would be better to prepare thin widget layer for embedded system like linuxgl: https://github.com/imphil/meta-b2g, I don't choose such approach at this moment because I think it's hard to merge it to main line in the near future and hard to continue maintaining forked version. I'd like to keep the difference against main line minimum. So we are now using X11 or Wayland via GTK (but it's not mandatory, all possibilities, sudggestions and advices are welcome).

As the first step we are now trying following things for those boards:

* Composition acceleration
    * i.MX6: It works by enabling GLContextProviderEGL
    * RZ/G1: Trying an experimental implementation which uses Wayland & EGL
             It works but not stable yet.
* Content acceleration
    * i.MX6: Enabled by default via XRender (but it seems slower than chromium)
    * RZ/G1: None. Use cairo-egl?
* H.264 acceleration
    * Testing GStreamer code in 45ESR
      (although it's already dropped at later version...)

The recipe is put to the following repository:

  https://github.com/mozilla-japan/meta-browser

If you want to test it on RZ/G1, you will need to upgrade GTK+ to 3.14 or later. The following repository is a sample recipe for it (note that it will be moved to other repository in the near future):

  https://github.com/ashie/meta-mozwayland
Depends on: 1281425
> * Composition acceleration

For wayland, we should discuss about it at bug1281425.
Depends on: 1306529
For movie playback acceleration, I filed bug1306529.
Depends on: 1306613
Wayland based BSP of NXP's i.MX6 doesn't include X11 library (DISTRO_FEATURES_remove = " x11 " is used). Wayland is used as the window system of IVI (In-Vehicle Infotainment) and NXP is a vendor which supports it.

  http://hackerboards.com/automotive-grade-linux-releases-unified-ivi-spec/

I heard from the member that they requires a web browser engine for it.
So it's also our important target. 

It would be nice if we enable to build Firefox with "--without-x11".
Bug 1306613 is the best place to discuss it.
> It would be nice if we enable to build Firefox with "--without-x11".

Ooops

- "--without-x11"
+ "--without-x"
Depends on: 1307329
Intercom devices are also our important target.
WebRTC may be used for such devices (some vendors are interested to that).
I filed a bug for it: bug1307329
Alias: gem
Summary: Port Gecko/Firefox to Yocto → Port Gecko/Firefox to Yocto/OpenEmbedded
Hello, I'm asking your help with an experiment with making decisions on bugs. You've been needinfo'ed on this bug. I'd like you to take one action to help this bug make progress toward a decision. The things you can do include:

* If you know or have a good guess of which product and component this bug belongs to, change the product and component of the bug
* If you know of the right person to ask about this bug, redirect the needinfo to them
* If you cannot reproduce the bug, close it

All we need you to do is one thing that will help us make a decision on the bug or resolve it.

Thank you for your help with this. If you have questions, please contact emma@mozilla.com.
Flags: needinfo?(bhackett1024)
Whiteboard: [ele:1b]
I'm sorry for long silence on this bug.
We are still working on this bug.

Recently we ported Firefox 52ESR to Yocto/OpenEmbedded:

https://github.com/mozilla-japan/meta-browser/tree/firefox-52.1esr

We have some patches to fix build issues on it.
We should post them to Bugzilla.
Flags: needinfo?(bhackett1024)
Depends on: 1369292
Depends on: 1374136
Depends on: 1434574
No longer depends on: 1215085
Depends on: 1502786
Depends on: 1545437
Depends on: 1571603
You need to log in before you can comment on or make changes to this bug.