Pergunta

Comecei a jogar com o android NDK.Uma das coisas que acabei de saber é sobre a criação de um aplicativo.mk arquivo para especificar o armv7 abi.

Eu estou construindo o san angeles exemplo, com os seguintes parâmetros.

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

No entanto, este parece exatamente com a mesma velocidade como fazia antes (ou seja, mal).Eu sou apenas GL limitado e não CPU limitada ou é algo de errado aqui?

Tenho notado quando eu compilo que eu tenho as seguintes opções de linha de comando emitido:

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

A única coisa que me preocupa não é o "softfp".Há menção do v7 abi, o VFP fpu coisas, e eu estou supondo que o "polegar" refere-se para o "polegar-2" instruções (Apesar de eu não saber o que exatamente são esses).No entanto, que "softfp" me preocupa.Não deveria ser "hardfp"?

Alguém tem alguma idéia sobre essas questões?Eu acho que eu provavelmente estou pronto para iniciar a execução de alguns GL ES 2.0 código para o meu HTC Desire, mas eu gostaria de ter certeza de que estou recebendo a melhor velocidade possível de fora :)

Felicidades antecipadamente!

Foi útil?

Solução

As opções de alimentação para o NDK só irá afectar a forma como o código é compilado.Isso não vai mudar, a GL libs ou qualquer outra coisa que faz parte da plataforma, que sempre são gerados de forma adequada.Se você está apenas jogando a geometria com a GL de hardware, você não vai ver a diferença.

Se você quiser ver se o seu opções estão a ter um efeito, baixar (ou criar) uma simples referência que se faz um monte de operações com ponto flutuante de precisão dupla valores, e quanto tempo leva para executar antes e depois.

A -mfloat-abi=softp argumento determina como valores de ponto flutuante são passados entre as funções.softfp significa que eles estão sempre passado em registos de número inteiro ou na pilha.Se o Android não especificar softfp, o ARMv7-Uma versão da biblioteca seria de esperar flutua a mostrar-se em registos de hardware, e qualquer código construído para ARMv5TE iria quebrar.

"softfp" adiciona um pouco de sobrecarga para algumas funções, mas as instruções para a movimentação de valores dentro e fora da fp registradores são de baixo do BRAÇO, e a ABI compatibilidade fornecidos faz valer a pena.

O "-mthumb" permite a geração de ouro/Thumb2 código.Polegar código tende a ser um pouco mais lento, mas um pouco menor do que o equivalente de BRAÇO;às vezes menor significa que você vai se encaixar melhor na CPU i-cache e vai realmente correr mais rápido.O tamanho é sempre uma preocupação sobre estes dispositivos, de modo que o Polegar está activada por predefinição.

Quando em dúvida, "arm eabi-objdump -d seja o que for.o" vai mostrar uma desmontagem do seu código.

Atualização: NDK r9b adicionado suporte para -mhard-float.Isso permite que você construa NDK bibliotecas com hard-float API de convenções para armeabi-v7a metas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top