Alguém pode explicar todas essas opções de desenvolvedor?

15

Alguém pode explicar essas opções de desenvolvedor?

  • Forçar renderização de GPU
  • Desativar operações de clipe não retangulares
  • Force 4X MSAA
  • Desativar sobreposições de HW

Quais são os possíveis efeitos que podem ser vistos no meu dispositivo, desativando / ativando-os? [ Nota: Encontrei outras opções pelo Google-ing, mas não essas. ]

As configurações do desenvolvedor afetam a vida útil da bateria usando velocidades de animação mais baixas (com precisão de duas a duas vezes) ou velocidades de animação mais altas (com precisão de 0,5x) às custas da experiência do usuário?

MANI
fonte

Respostas:

18

Lembre-se de que estas são opções do desenvolvedor e podem não ser úteis ou podem ter um impacto negativo no desempenho do seu dispositivo.

Forçar renderização de GPU

A GPU é a unidade de processamento gráfico. É muito parecido com a CPU, mas em vez de processar números e cuidar de tarefas do sistema operacional e do hardware, a GPU renderiza informações gráficas e as coloca na tela para você.

A CPU pode processar instruções gráficas muito bem, mas isso leva tempo para fazer outros cálculos e pode levar a um atraso enquanto as instruções gráficas são processadas

No Ice Cream Sandwich em diante, os desenvolvedores (ou usuários avançados) têm a opção de forçar os aplicativos a usar a renderização de GPU, esteja esse bit ativado ou desativado no manifesto do aplicativo. Isso não necessariamente torna o aplicativo mais rápido e pode causar problemas.


Desativar operações de clipe não retangulares

Isso é técnico demais para eu explicar em detalhes. Basicamente, uma "tela" é usada para desenhar. O código fonte do Android contém:

/**
     * Turn on to **debug non-rectangular clip operations**.
     *
     * Possible values:
     * "hide", to disable this debug mode
     * "highlight", highlight drawing commands tested against a non-rectangular clip
     * "stencil", renders the clip region on screen when set
     *
     * @hide
     */
    public static final String DEBUG_SHOW_NON_RECTANGULAR_CLIP_PROPERTY =
            "debug.hwui.show_non_rect_clip";

Você pode desativá-lo para criar áreas de tela incomuns (não retangulares). Veja aqui para mais detalhes sobre este

Como @ IanNi-Lewis aponta em seu comentário:

Provavelmente vale ressaltar que "regiões de clipes não retangulares" são um pouco enganadoras. Deveria ser "regiões de clipe que não são retângulos alinhados à tela". Se você tiver uma região de clipe retangular que é girada em um ângulo não múltiplo de 90 graus, ela segue o mesmo caminho lento que uma região de clipe em forma de rosquinha ou o que você tem. (O "caminho lento" usa o buffer de estêncil e provavelmente não precisa ser tão lento quanto é; é uma boa área para otimização futura.)


Force 4X MSAA

O Force 4x MSAA não requer um dispositivo raiz. Essa opção faz o mesmo que qualquer filtro Anti Aliasing em jogos para PC - suaviza toda a pixelização e fornece melhor renderização, o que significa gráficos com melhor aparência. Os usuários devem saber que essa função é recomendada apenas para dispositivos que possuem GPU com suporte nativo ao MSAA.

Da Wikipedia :

No processamento de sinais e nas disciplinas relacionadas, o alias é um efeito que faz com que sinais diferentes se tornem indistinguíveis (ou aliases um do outro) quando amostrados. Também se refere à distorção ou artefato resultante quando o sinal reconstruído a partir das amostras é diferente do sinal contínuo original.


Desativar sobreposições de HW

Sem uma sobreposição de hardware, todos os aplicativos que estão exibindo itens na tela compartilharão a memória de vídeo e terão que verificar constantemente se há colisão e recorte para renderizar uma imagem adequada, isso pode custar muito poder de processamento. Com uma sobreposição de hardware, cada aplicativo obtém sua própria porção de memória de vídeo, eliminando a necessidade de verificar colisões e cortes.

Como @DanHulme disse: o Windows no Android é sempre composto em vez de renderizado na memória de vídeo compartilhada. Normalmente, SurfaceFlingerusa a GPU para composição, mas usará uma sobreposição de hardware quando isso for possível, o que é mais rápido e usa menos bateria. Desativar sobreposições significa que ele sempre usará a renderização da GPU. Só é útil para depurar a integração do sistema ou a decodificação de vídeo HW: mesmo os desenvolvedores de aplicativos não precisam ativar esta opção

RossC
fonte
2
4xMSAA pode não ser realmente mais lento. Em certas GPUs, como o Mali-400, a diferença de velocidade entre 4xMSAA e sem suavização de serrilhado é insignificante devido à forma como os shaders de fragmento são executados. Também vale a pena mencionar que isso afeta apenas os aplicativos GLES e não torna o texto e os ícones em aplicativos normais mais nítidos.
Dan Hulme
3
Não acho que sua descrição de sobreposições de HW esteja correta. O Windows no Android é sempre composto em vez de renderizado na memória de vídeo compartilhada. Normalmente, SurfaceFlingerusa a GPU para composição, mas usará uma sobreposição de hardware quando isso for possível, o que é mais rápido e usa menos bateria. Desativar sobreposições significa que ele sempre usará a renderização da GPU. Só é útil para depurar a integração do sistema ou a decodificação de vídeo HW: mesmo os desenvolvedores de aplicativos não precisam ativar esta opção.
Dan Hulme
Estou longe do meu PC, vou editar o mais rápido possível, fiquei um pouco confusa. Ou sentir-se livre para editar
RossC
Bem atualização para processamento de uso gpu fez a si aplicativo não falha sobre esta questão :-)
canadense Luke
1
@Ross Eu não acho que ele tem um enorme efeito sobre a bateria apenas algumas bateria de poupança como no Windows, na qual estamos desativar os gráficos transparentes (Ie Aero tema é sugerido para desativar para melhorar o tempo de bateria)
user285oo6