[Android] 特定GPU専用ゲームのはずが、なぜか他のGPUでも動いちゃう!?

あやしげなChainfire 3Dについて
1
sakamoto.kazuki @splhack

"HOW TO: Play TEGRA,QUALCOMM,POWERVR based games on your android device!" http://bit.ly/kUC4Uu これはどういうこっちゃ?

2011-06-09 15:43:01
sakamoto.kazuki @splhack

TegraとSnapdragonのGL extensionが、PowerVRなGPUの端末で使えちゃう方法だぜ、的な?

2011-06-09 15:44:13
sakamoto.kazuki @splhack

"[Android 2.1+][07.06.2011][v1.9] Chainfire3D [ROOT][OpenGL ES 2.0+] " http://bit.ly/lyksYM OpenGLESのドライバすげかえて、実行時テクスチャサイズ縮小とか、16bit→32bitとか

2011-06-09 15:58:46
sakamoto.kazuki @splhack

32bit textureの方が速い環境があったりするので動的に変換しちゃうよ http://bit.ly/lyksYM なるほどねぇ

2011-06-09 16:04:33
sakamoto.kazuki @splhack

GPU nativeな圧縮テクスチャもソフトで実行時にデコードして、rawテクスチャとして使えるようにできるかもしれぬ。fill rateとかメモリとか平気かどうか不明ながら。

2011-06-09 16:06:33
sakamoto.kazuki @splhack

Galaxy S 2ではCube Mappingをdisableにすることで快適にゲームできるようにするとか http://bit.ly/mQZUC6

2011-06-09 16:16:18
sakamoto.kazuki @splhack

Chainfire3Dのpluginのソースみると http://bit.ly/mCdhuH やはりglCompressedTexImage2D内でGPU nativeの圧縮テクスチャを動的に展開して、glTexImage2Dに渡してるっぽい。さすがに他の拡張の対応はなさげ

2011-06-09 16:50:56
sakamoto.kazuki @splhack

おまけにPro版なら、Android Market用の情報取得部分もフックして、AndroidManifest指定されてるテクスチャフォーマットに非対応でも買えるようにできちゃったり

2011-06-09 21:33:13
sakamoto.kazuki @splhack

動的にテクスチャサイズ縮小することでフレームレート向上させるとか、16bit→32bit変換することでフレームレートあがっちゃったり(Qualcommの古いAdrenoはそんな感じらしい)

2011-06-09 21:34:30
sakamoto.kazuki @splhack

EGLのフックするらしいので、フレームバッファの設定とか変えることでフレームレートあげるとか。見た目より速度優先、みたいなのができちゃうわけですね。

2011-06-09 21:35:39