Skip to content

Instantly share code, notes, and snippets.

@noir73
Created December 24, 2013 01:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save noir73/8107319 to your computer and use it in GitHub Desktop.
Save noir73/8107319 to your computer and use it in GitHub Desktop.
Firefox OS Advent Calendar 2013 - 2013/12/18 -

Firefox OS Advent Calendar 2013 - 2013/12/18 -


1. まずは自己紹介

noir と言います. (自称) 無職のノマド生活中です.

Firefox OS 勉強会も最初のうちは関東/関西ともに参加させていただいていたのでご存知のかたもおられるかと思いますが, 広島の山の中からの参加のため平日にある関東の勉強会は最近欠席気味です. 関西も諸事情が重なって欠席気味ですね.

けっして Firefox OS に興味がなくなったわけではありません(...)

前回の Gecko 勉強会には補欠にも関わらずしらんぷりして参加してました. この記事を Advent Calendar にあげる (ことができるといいなぁ) の翌日にある Gecko 勉強会もまた補欠ですがたぶんしらんぷりして座っていますw

2. おことわり

(というか謝罪です!!)

みなさんがあまりにきちんと書かれているのでどうしたもんかと思案していたら (ちょうどいいことに??) PC がお亡くなりになったのでコード読めなくなりました. PC の扱いが雑なのか PC の過労が原因なのか PC がやる気をなくしたようです.

まずは今回は触りだけ書かせていただいてあとで追記/修正します. (つもりです...)

3. そろそろ本題

みなさんが Gaia 層を中心に書かれているので閑話休題で Gecko 層の一部について書きます. 興味のないかたも多いと思いますがご容赦を...
# 手元にコードないので記憶に頼ってます...

正直ソース多すぎて見切れていない状態なので が含まれていたら訂正お願いします.
今回は描画関係について覚えている範囲でまとめておきます.

4. Android での描画系の流れ

Android に詳しいかたが多いようですのでまずはそちらから.

おおざっぱに書くと Android では

WindowManagerService -> Surface -> SurfaceFlinger
WindowManagerService -> View -> Skia

みたいな流れになっています. OpenGL/ES API はちょっと特殊ですがまぁいいでしょう. これらよりも下位層は GPU や CPU にどうつながってるか端末依存なので今回は無視します. (最近の端末は Hardware Accelaration が有効になっていて GPU につながっていることが多いですがバス幅や VRAM などによってあまり有効ではない場合もあります.)

パフォーマンスを気にされるかたにはとても重要なファクターではありますが... 個人的には現時点でパフォーマンスを気にするなら asm.js とか使うより native コード書いたらいいじゃん と考えています.

5. Firefox OS での描画の流れ

Firefox OS は Android の HAL 層以下を基本的には流用していますが HTML5 Platform なのでそのまま使うよりはもっと効率よく使うようになっています.
# どんどん記憶があいまいになってきた...

(正確ではないですが) Android の WindowManagerService に該当するのが Layout です.
B2G/gecko/layout にコード群があります. (かなり多いです)

(さらにおおざっぱに書くと) Android の Surface や View に該当するのが layer です. こちらは B2G/gecko/gfx/layers にコード群があります. FrameBuffer やら ImageContainer やらです.

基本的には Graphics 系の処理は B2G/gecko/gfx 以下にあります.
# この下を見ると Gecko の過去の変遷を楽しむことができますがこの辺りはまた別の機会に...

例外的に B2G/gecko/layout 以下にベクトル描画である svg がありますがそのうち gfx 以下になるのかな と予想してます.

ということで何が言いたいのかというとゲーム業界のかたなどで OpenGL/ES や Render 系を native で書きたいというかたは B2G/gecko/gfx/layers 以下を見るとしあわせになれるかもしれません.

6. おわり

なんかまとまりなくなってきたので今回は終わりにします. おつきあいありがとうございました. もし勉強会などでさらにお話が必要であればちゃんと調べますので今回は勘弁してください.

2013/12/19 の Gecko 勉強会での Moz2D のお話をもとにいろいろ書きなおそうと考えましたがやめときます.

たぶん国内で端末が発売されないと Gecko 層の掘り下げは進まないんじゃないかなぁ (棒

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment