As palavras-chave "PRECISA", "NÃO PODE", "DEVE" e "ALTAMENTE RECOMENDADO" nesta página devem ser interpretadas conforme descrito na RFC 2119.
Sistema convidado (imagem de VM)
Os requisitos nesta seção se aplicam ao sistema convidado.
Memória
O sistema PRECISA fornecer um mínimo de 2 GB de memória por VM.
Interfaces binárias de aplicativos
Implementações de dispositivos:
- Precisa ser compatível com uma ou mais ABIs do Android NDK definidas.
- É necessário usar a mesma ABI do Android NDK para todas as imagens de VM no mesmo dispositivo.
- Precisa ser compatível com a origem (por exemplo, com o cabeçalho) e com o binário (para a ABI) de cada biblioteca obrigatória na lista a seguir.
PRECISA disponibilizar todas as seguintes bibliotecas, que fornecem APIs nativas, para apps de veículos definidos por software (SDV, na sigla em inglês):
libc(biblioteca C)libdl(vinculador dinâmico)libdrm.so(biblioteca de espaço do usuário do Direct Rendering Manager)libgbm.so(gerenciamento genérico de buffer)libEGL.so(gerenciamento de superfície nativo do OpenGL)libGLESv1_CM.so(OpenGL ES 1.x)libGLESv2.so(OpenGL ES 2.0)libGLESv3.so(OpenGL ES 3.x)liblog(geração de registros do Android)libtinyalsav2.so(gravação e reprodução de áudio)libvulkan.so(Vulkan)
NÃO adicione nem remova as funções públicas das bibliotecas nativas anteriores.
PRECISA exportar todos os símbolos de função do OpenGL ES 3.1 e do Android Extension Pack conforme definido no NDK, pela biblioteca libGLESv3.so. Embora todos os símbolos precisem estar presentes, o OpenGL ES descreve com mais detalhes os requisitos para quando a implementação completa de cada função correspondente é esperada.
É OBRIGATÓRIO exportar os símbolos de função principais do Vulkan 1.1, bem como as extensões
VK_KHR_surface,VK_KHR_swapchain,VK_KHR_maintenance1eVK_KHR_get_physical_device_properties2pela bibliotecalibvulkan.so. Embora todos os símbolos precisem estar presentes, o Vulkan descreve com mais detalhes os requisitos para quando a implementação completa de cada função correspondente é esperada.DEVE ser criado usando o código-fonte e os arquivos de cabeçalho disponíveis no Android Open Source Project upstream.
Gráficos
O sistema PRECISA usar virtio-gpu para gráficos acelerados por hardware. O driver do lado do
convidado DEVE usar gfxstream para renderização.
Entrada
O sistema convidado PRECISA incluir suporte para eventos de entrada encaminhados do sistema
host usando virtio-input.
OpenGL ES
Implementações de dispositivos:
- PRECISA identificar corretamente as versões compatíveis do OpenGL ES (1.1, 2.0, 3.0, 3.1, 3.2) usando as APIs nativas.
- PRECISAM incluir suporte para todas as APIs nativas correspondentes em todas as versões do OpenGL ES compatíveis.
- PRECISA ser compatível com OpenGL ES 1.1 e 2.0.
- É ALTAMENTE RECOMENDADO que ofereçam suporte ao OpenGL ES 3.1.
- DEVE ser compatível com o OpenGL ES 3.2.
- É OBRIGATÓRIO informar usando as APIs gerenciadas e nativas do OpenGL ES qualquer outra extensão do OpenGL ES implementada. Por outro lado, NÃO é OBRIGATÓRIO informar strings de extensão que não são compatíveis.
- PRECISA oferecer suporte às seguintes extensões:
EGL_EXT_image_dma_buf_importEGL_EXT_image_dma_buf_import_modifiersEGL_KHR_fence_syncEGL_KHR_image_baseEGL_KHR_wait_syncGL_OES_EGL_image
É ALTAMENTE RECOMENDÁVEL que as implementações de dispositivos usem a biblioteca ANGLE com back-end Vulkan para implementar o OpenGL ES.
Vulkan
Implementações de dispositivos:
- É ALTAMENTE RECOMENDADO incluir suporte para Vulkan 1.3.
- NÃO PODE oferecer suporte a uma versão variante do Vulkan. Ou seja, a parte variante da versão principal do Vulkan precisa ser zero.
- PRECISA oferecer suporte às seguintes extensões:
VK_ANDROID_external_memory_android_hardware_bufferVK_EXT_external_memory_dma_bufVK_EXT_queue_family_foreignVK_KHR_external_memory_fdVK_KHR_external_semaphore_fd
Compatibilidade multimídia
As implementações de dispositivos PRECISAM permitir a reprodução de conteúdo de áudio bruto com as seguintes características:
- Formatos de origem:PCM linear, 16 bits, 8 bits, ponto flutuante
- Canais:mono, estéreo, configurações multicanal válidas com até oito canais
- Taxas de amostragem (em Hz):
- 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 nas configurações de canal listadas anteriormente
- 96.000 em mono e estéreo
As implementações de dispositivos PRECISAM permitir a captura de conteúdo de áudio bruto. No mínimo, as implementações de dispositivos precisam ser compatíveis com as seguintes características:
- Formato:PCM linear, 16 bits
- Taxas de amostragem:8.000, 11.025, 16.000, 44.100, 48.000 Hz
- Canais:mono
As implementações de dispositivos DEVEM permitir a captura de conteúdo de áudio bruto com as seguintes características:
- Formato:PCM linear de 16 e 24 bits
- Taxas de amostragem:8.000, 11.025, 16.000, 22.050, 24.000, 32.000, 44.100, 48.000 Hz
- Canais:tantos canais quanto o número de microfones no dispositivo
As implementações de dispositivos precisam oferecer suporte à reprodução e captura de áudio pela API
libtinyalsav2.so, usando o dispositivovirtio-soundpara acesso ao hardware, e precisam oferecer suporte à API ALSA.Os codificadores e decodificadores de vídeo PRECISAM ser compatíveis com pelo menos um formato de cor YUV420 8:8:8 planar ou semiplanar.
Os decodificadores e codificadores de vídeo precisam ser compatíveis com o codec H.264 AVC.
As implementações de dispositivos precisam ser compatíveis com o nível 3.1 do perfil principal H.264 e o perfil de referência. O suporte para ordenação arbitrária de segmentos (ASO), ordenação flexível de macroblocos (FMO) e segmentos redundantes (RS) é opcional.
Codificadores de vídeo:
- PRECISA oferecer suporte aos perfis de codificação de vídeo de definição padrão (SD) na tabela a seguir.
PRECISA ser compatível com os perfis de codificação de vídeo em alta definição (HD) indicados na tabela a seguir.
SD (baixa qualidade) SD (alta qualidade) HD 720p HD 1080p Resolução do vídeo 320 x 240 px 720 x 480 px 1.280 x 720 px 1920 x 1080 px Frame rate do vídeo 20 qps 30 fps 30 fps 30 fps Taxa de bits de vídeo 384 Kbps 2 Mbps 4 Mbps 10 Mbps
Decodificadores de vídeo:
- PRECISA oferecer suporte aos perfis de decodificação de vídeo HD 720p na tabela a seguir.
PRECISA ser compatível com os perfis de decodificação de vídeo HD 1080p na tabela a seguir.
SD (baixa qualidade) SD (alta qualidade) HD 720p HD 1080p Resolução do vídeo 320 x 240 px 720 x 480 px 1.280 x 720 px 1920 x 1080 px Frame rate do vídeo 30 fps 30 fps 60 qps 30 fps Taxa de bits de vídeo 800 Kbps 2 Mbps 8 Mbps 20 Mbps
As implementações de dispositivos precisam oferecer suporte a codecs de mídia usando a API Video4Linux.
As implementações de dispositivos PRECISAM fornecer acesso a um decodificador de vídeo por hardware usando a API Video4Linux.
Todos os codificadores de vídeo e imagem acelerados por hardware PRECISAM oferecer suporte à codificação de frames das câmeras de hardware. As implementações de dispositivos PRECISAM fornecer acesso de hardware para codificação e decodificação de vídeo usando
virtio-media.As implementações de dispositivos PRECISAM fornecer acesso a uma câmera de vídeo usando a API Video4Linux.
Sistema host (hipervisor e hardware)
Os requisitos nesta seção se aplicam ao sistema host e ao ambiente do hipervisor.
Virtualização
- Além dos dispositivos
virtioexigidos pelo perfil principal, o sistema host PRECISA fornecer o seguinte:virtio-gpu: para GPU virtual e telavirtio-input: para encaminhar eventos de entrada (por exemplo, toque, teclado)virtio-sound: para dispositivos de áudio virtuaisvirtio-videoouvirtio-media: para dispositivos de codec de vídeo virtual
Entrada
- O dispositivo PRECISA oferecer suporte a dispositivos de entrada e encaminhar eventos para sistemas convidados
usando
virtio-input. O dispositivo DEVE ser compatível com entradas de ponteiro, botão e controle giratório.