2014年5月18日現在、2011年製XperiaのカスタムROMに大きな動きがありました。それは新しいメモリ管理システム、IONの採用です。 IT素人による解説です。
今月、Legacy Xperiaとそこから派生したCarbon ROM・VanirAOSPの3つ全部がカーネルにIONを採用したNightly ROMを公開しました。他にもあると思いますが私が把握しているカスタムROMはこの3つです。
IONとは?
まずIONの説明の前に。スマートフォンはSoC(cpuみたいなやつ)とハードウエア(画面、スピーカー、カメラなど)の間にバッファメモリというものを置き、それを経由して情報をやり取りしています。例えばカメラアプリを起動して操作するとき、その情報は直接SoCとやり取りされません。まずバッファメモリに蓄えられ、それをSoCが読み取り、次に処理した情報をまたバッファメモリに書き込み、それをカメラアプリが読み込むといった流れになっています。※IT素人による解説です。ここでやり取りされる情報はカメラアプリならカメラアプリのみが利用する情報であり、他のアプリは利用しません。こういったSoCとのやり取りで生まれる情報は一時的であり、常に消され、その消されたスペースは別のアプリが利用します。
ICSより古いバージョンのAndroid OSではこのバッファメモリの管理はSoCベンダーが行う必要が有りました。つまりSoCベンダーがSONYとSamsungに自社のSoCを売るなら二社分のメモリ管理用のドライバを提供する必要があったのです。これでは大変だということでGoogleは「ICSからOSレベルでメモリ管理システムを採用する」ことを決定します。このシステム名がIONです。
問題発生
Snapdragonを販売するQualcommのメモリ管理システム名はPMEMといい、2011年製Xperiaの中でも動いています。これは公式ICSを焼いた場合でも変わりません。
これらXperiaにJB以降のカスタムROMを焼いた場合、問題が発生します。例えば、CM10を焼いた2011年製XperiaでGoogle MAPを開くと画面がガクガクと揺れます。これはQualcommが提供するグラフィックドライバがIONのみになった事が原因です。実際、バージョン6.14.5以前のGoogle MAPは全く問題無く動きます。これはGBが利用できる最後のバージョンです。
この問題を解決するにはカーネルを作り替えてIONを採用する必要が有ります。しかし、IONを採用した場合、今度はカメラが動かなくなる問題が発生します。なぜならカメラを動かすドライバはSONYによって作られており、このドライバはPMEMでしか機能しないからです。つまり、PMEM向けのドライバとION向けのドライバが一緒に動く環境が一番の理想であり、これはとても困難な事でした。
解決策
私は詳しく理解できていませんが、IONの上にPMEMを置くことでカメラを犠牲にすることなくIONに乗り換える方法がGalaxy S Plusのハッキングチーム、とくにその中のChristopher83氏により開発されました。そしてその手法は2011年製Xperiaでも有効だったそうです。これによりLegacy Xperiaチームの中でもIONとPMEMのハイブリッドカーネルの開発が続けられていました。それがようやく形になったため最近のカスタムROMにはIONが採用される傾向があります。
参考にしたサイト
What is ION?
https://github.com/LegacyXperia/Wiki/wiki/What-is-ION%3F
The Android ION Memory Manager
http://android-revolution-hd.blogspot.jp/2013/08/the-android-ion-memory-manager.html