Získání hardware s pohyblivou řádovou čárkou s operačním systémem Android NDK

hlasů
13

Začal jsem hrát s Android NDK. Jedna z věcí, které jsem se dozvěděl, je o vytvoření souboru application.mk určit ARMv7 ABI.

Stavím příklad san-Angeles se následujícími parametry.

APP_MODULES      := sanangeles
APP_PROJECT_PATH := $(call my-dir)/../
APP_OPTIM        := release
APP_ABI          := armeabi-v7a

Nicméně toto se zdá být přesně stejnou rychlostí, jako tomu bylo dříve (tj špatně). Jsem jen GL omezené a ne CPU omezené nebo je něco špatně?

Všiml jsem si, když jsem kompilaci, že jsem si tyto možnosti příkazového řádku emitován:

-march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb 

Ta věc, která mě trápí, že je „softfp“. Je zde zmínka o v7 ABI v VFP FPU věci a Hádám, dále jen „palec“ odkazuje na „palec-2“ instrukce (I když nevím, co přesně se jedná). Však, že „softfp“ znepokojuje mě. By to nemělo být „hardfp“?

Každý, kdo má nějaké nápady na tyto otázky? Myslím, že jsem asi o připraven začít provádět nějaké GL ES 2.0 kód pro můj HTC Desire, ale rád bych, aby se ujistil jsem se pro nejlepší možnou rychlost z něj :)

Cheers předem!

Položena 09/06/2010 v 11:21
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
32

Možnosti, které dodávají do NDK bude mít vliv pouze na způsob, jakým váš kód je sestaven. To nezmění libs GL nebo cokoli jiného, ​​co je součástí platformy, které jsou vždy generován vhodným způsobem. Pokud jste právě házet geometrii na GL hardware, nebudete vidět rozdíl.

Chcete-li zjistit, zda jsou vaše možnosti jsou s účinkem, stáhnout (nebo vytvořte) jednoduché měřítko, který dělá spoustu operace s dvojitou přesností plovoucí hodnoty bodu a času, jak dlouho to trvá spustit před a po.

The -mfloat-Abi = softp argumentace určuje, jak jsou hodnoty s plovoucí desetinnou čárkou prošel mezi funkcemi. softfp znamená, že vždycky prošel v celočíselných registrů nebo na stacku. Pokud Android neupřesnila softfp se ARMv7-A verze knihovny by se očekávat, plováky se ukázat v hardwarových registrů, a jakýkoli kód postavený pro ARMv5TE zlomí.

„Softfp“ dodává malou režii na některé funkce, ale pokyny pro pohyb hodnoty dovnitř a ven FP registrů jsou levné na ARM a kompatibilita ABI za předpokladu, dělá to stojí za to.

Dále jen „-mthumb“ umožňuje generaci Thumb / thumb2 kódu. Palec kód má tendenci být pomalejší, ale o něco menší než ekvivalentní ARM; někdy menší, znamená, že budete lépe vejde do CPU i-cache a bude skutečně běžet rychleji. Velikost je vždy obavy o těchto zařízeních, takže palec je ve výchozím nastavení povoleno.

V případě pochybností, „arm-EABI-objdump -d whatever.o“ vám ukáže rozebrání kódu.

Aktualizace: NDK R9b přidána podpora pro -mhard-float. To vám umožní vytvořit NDK knihovny s konvencí API hard-float pro armeabi-v7a cílů.

Odpovězeno 12/06/2010 v 00:09
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more