String de nome
XR_ANDROID_performance_metrics
Tipo de extensão
Extensão de instância
Número de extensão registrado
466
Data da última modificação
2024-09-06
Status do IP
Nenhuma reivindicação de IP conhecida.
Dependências de extensão e versão
Colaboradores
Dmitry Kotov, Google
Levana Chen, Google
Jared Finder, Google
Spencer Quin, Google
Visão geral
Essa extensão oferece APIs para enumerar e consultar vários contadores de métricas de desempenho do dispositivo XR, compositor e aplicativo XR atual. Os desenvolvedores podem realizar análises de desempenho e fazer otimização direcionada no aplicativo de XR usando os contadores de métricas de desempenho coletados. O aplicativo não pode mudar o comportamento com base nas leituras do contador.
Os contadores de métricas de desempenho são organizados em valores
XrPath predefinidos, no caminho raiz
/perfmetrics_android. Um
aplicativo pode consultar os contadores disponíveis usando
xrEnumeratePerformanceMetricsCounterPathsANDROID. Confira uma lista de caminhos de contador de métricas de desempenho que podem ser fornecidos em dispositivos Android:
- /perfmetrics_android/app/cpu_frametime (milissegundos, float) - tempo de parede gasto pelo cliente para processar um frame.
- /perfmetrics_android/app/gpu_frametime
(milissegundos, float) - tempo de parede que o cliente gastou aguardando a conclusão do trabalho da GPU
por frame. Observações:
- Um tempo de espera alto pode significar que a GPU estava ocupada com outras tarefas, não necessariamente que o cliente está fazendo muito trabalho de GPU.
- O tempo de espera da GPU pode ser zero se a renderização já tiver sido concluída quando verificada pelo compositor.
 
- /perfmetrics_android/app/cpu_utilization
(porcentagem, float) - taxa total de uso da CPU do app com média ao longo do tempo.
- Ele pode ser maior que 100% em processadores multicore.
 
- /perfmetrics_android/app/gpu_utilization (porcentagem): taxa de utilização total da GPU do app em média ao longo do tempo.
- /perfmetrics_android/app/motion_to_photon_latency (milissegundos, float) é o tempo gasto desde o evento de movimento iniciado pelo usuário até a atualização da imagem física correspondente na tela.
- /perfmetrics_android/compositor/cpu_frametime (milissegundos, float) - tempo de parede gasto pelo compositor para processar um frame.
- /perfmetrics_android/compositor/gpu_frametime (milissegundos, float) - tempo de parede que o compositor gastou esperando a GPU ser concluída por frame.
- /perfmetrics_android/compositor/dropped_frame_count (número inteiro) é o número total de frames descartados de todos os apps.
- /perfmetrics_android/compositor/frames_per_second (float) - número de frames do compositor renderizados no dispositivo por segundo.
- /perfmetrics_android/device/cpu_utilization_average (porcentagem, float) - taxa de utilização da CPU do dispositivo com média em todos os núcleos e média ao longo do tempo.
- /perfmetrics_android/device/cpu_utilization_worst (porcentagem, flutuante) - taxa de utilização da CPU do dispositivo do núcleo de pior desempenho calculada em média ao longo do tempo.
- /perfmetrics_android/device/cpu0_utilization até /perfmetrics_android/device/cpuX_utilization (porcentagem, flutuante, X é o número de núcleos de CPU menos um) - taxa de utilização da CPU do dispositivo por núcleo de CPU, em média, ao longo do tempo.
- /perfmetrics_android/device/cpu_frequency (MHz, float) - a frequência da CPU do dispositivo é calculada em média em todos os núcleos e em média ao longo do tempo.
- /perfmetrics_android/device/gpu_utilization (porcentagem, float) - taxa de utilização da GPU do dispositivo com média ao longo do tempo.
Depois que uma sessão é criada, um aplicativo pode usar xrSetPerformanceMetricsStateANDROID para ativar o sistema de métricas de desempenho para essa sessão. Um aplicativo pode usar xrQueryPerformanceMetricsCounterANDROID para consultar um contador de métricas de desempenho em uma sessão que tenha o sistema de métricas de desempenho ativado ou usar xrGetPerformanceMetricsStateANDROID para consultar se o sistema de métricas de desempenho está ativado.
Para ativar a funcionalidade dessa extensão, o aplicativo precisa transmitir o nome da extensão para xrCreateInstance usando o parâmetro XrInstanceCreateInfo::enabledExtensionNames conforme indicado na seção Extensões.
Novos tipos de flags
typedef XrFlags64 XrPerformanceMetricsCounterFlagsANDROID;
// Flag bits for XrPerformanceMetricsCounterFlagsANDROID
static const XrPerformanceMetricsCounterFlagsANDROID XR_PERFORMANCE_METRICS_COUNTER_ANY_VALUE_VALID_BIT_ANDROID = 0x00000001;
static const XrPerformanceMetricsCounterFlagsANDROID XR_PERFORMANCE_METRICS_COUNTER_UINT_VALUE_VALID_BIT_ANDROID = 0x00000002;
static const XrPerformanceMetricsCounterFlagsANDROID XR_PERFORMANCE_METRICS_COUNTER_FLOAT_VALUE_VALID_BIT_ANDROID = 0x00000004;
Novas constantes de tipo enumerado
A enumeração XrStructureType foi ampliada com:
- XR_TYPE_PERFORMANCE_METRICS_STATE_ANDROID
- XR_TYPE_PERFORMANCE_METRICS_COUNTER_ANDROID
Novos tipos enumerados
typedef enum XrPerformanceMetricsCounterUnitANDROID {
    XR_PERFORMANCE_METRICS_COUNTER_UNIT_GENERIC_ANDROID = 0,
    XR_PERFORMANCE_METRICS_COUNTER_UNIT_PERCENTAGE_ANDROID = 1,
    XR_PERFORMANCE_METRICS_COUNTER_UNIT_MILLISECONDS_ANDROID = 2,
    XR_PERFORMANCE_METRICS_COUNTER_UNIT_BYTES_ANDROID = 3,
    XR_PERFORMANCE_METRICS_COUNTER_UNIT_HERTZ_ANDROID = 4
} XrPerformanceMetricsCounterUnitANDROID;
Novas estruturas
A estrutura XrPerformanceMetricsStateANDROID é definida como:
typedef struct XrPerformanceMetricsStateANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           enabled;
} XrPerformanceMetricsStateANDROID;
Descrições dos participantes
- typeé o XrStructureType dessa estrutura.
- nexté- NULLou um ponteiro para a próxima estrutura em uma cadeia de estruturas. Nenhuma dessas estruturas é definida no núcleo do OpenXR ou nesta extensão.
- enabledé definido como- XR_TRUEpara indicar que o sistema de métricas de performance está ativado. Caso contrário,- XR_FALSEé usado ao receber o estado. Ao definir o estado, defina como- XR_TRUEpara ativar o sistema de métricas de desempenho e- XR_FALSEpara desativá-lo.
XrPerformanceMetricsStateANDROID é fornecido como entrada ao chamar xrSetPerformanceMetricsStateANDROID para ativar ou desativar o sistema de métricas de desempenho. XrPerformanceMetricsStateANDROID é preenchido como um parâmetro de saída ao chamar xrGetPerformanceMetricsStateANDROID para consultar se o sistema de métricas de desempenho está ativado.
Uso válido (implícito)
- A extensão XR_ANDROID_performance_metricsprecisa ser ativada antes de usar XrPerformanceMetricsStateANDROID.
- typeprecisa ser- XR_TYPE_PERFORMANCE_METRICS_STATE_ANDROID
- nextprecisa ser- NULLou um ponteiro válido para a próxima estrutura em uma cadeia de estruturas
A estrutura XrPerformanceMetricsCounterANDROID é definida como:
typedef struct XrPerformanceMetricsCounterANDROID {
    XrStructureType                            type;
    void*                                      next;
    XrPerformanceMetricsCounterFlagsANDROID    counterFlags;
    XrPerformanceMetricsCounterUnitANDROID     counterUnit;
    uint32_t                                   uintValue;
    float                                      floatValue;
} XrPerformanceMetricsCounterANDROID;
Descrições dos participantes
- typeé o XrStructureType dessa estrutura.
- nexté- NULLou um ponteiro para a próxima estrutura em uma cadeia de estruturas. Nenhuma dessas estruturas é definida no núcleo do OpenXR ou nesta extensão.
- counterFlagsé uma máscara de bits de XrPerformanceMetricsCounterFlagsANDROID que descreve a validade dos membros de valor.
- counterUnité um tipo enumerado de XrPerformanceMetricsCounterUnitANDROID que descreve a unidade de medida.
- uintValueé o valor do contador no formato- uint32_t. É válido se- counterFlagscontiver- XR_PERFORMANCE_METRICS_COUNTER_UINT_VALUE_VALID_BIT_ANDROID.
- floatValueé o valor do contador no formato- float. É válido se- counterFlagscontiver- XR_PERFORMANCE_METRICS_COUNTER_FLOAT_VALUE_VALID_BIT_ANDROID.
O XrPerformanceMetricsCounterANDROID é preenchido chamando xrQueryPerformanceMetricsCounterANDROID para consultar informações de contador de métricas de desempenho em tempo real.
Uso válido (implícito)
- A extensão XR_ANDROID_performance_metricsprecisa ser ativada antes de usar XrPerformanceMetricsCounterANDROID.
- typeprecisa ser- XR_TYPE_PERFORMANCE_METRICS_COUNTER_ANDROID
- nextprecisa ser- NULLou um ponteiro válido para a próxima estrutura em uma cadeia de estruturas
- counterFlagsprecisa ser 0 ou uma combinação válida de valores de XrPerformanceMetricsCounterFlagsANDROID.
- counterUnitprecisa ser um valor XrPerformanceMetricsCounterUnitANDROID válido.
Novas funções
A função xrEnumeratePerformanceMetricsCounterPathsANDROID enumera todos os caminhos de contador de métricas de desempenho que têm suporte do ambiente de execução. Ela é definida como:
XrResult xrEnumeratePerformanceMetricsCounterPathsANDROID(
    XrInstance                                  instance,
    uint32_t                                    counterPathCapacityInput,
    uint32_t*                                   counterPathCountOutput,
    XrPath*                                     counterPaths);
Descrições dos parâmetros
- instanceé um identificador XrInstance criado anteriormente com xrCreateInstance.
- counterPathCapacityInputé a capacidade da matriz- counterPathsou 0 para indicar uma solicitação para recuperar a capacidade necessária.
- O counterPathCountOutputé preenchido pelo ambiente de execução com a contagem decounterPathsgravada ou a capacidade necessária casocounterPathCapacityInputseja insuficiente.
- counterPathsé uma matriz de- XrPathpreenchida pelo ambiente de execução que contém todos os contadores de métricas de performance disponíveis, mas pode ser- NULLse- counterPathCapacityInputfor 0.
- Consulte a seção Parâmetros de tamanho do buffer para uma descrição detalhada
de como recuperar o tamanho counterPathsnecessário.
Uso válido (implícito)
- A extensão XR_ANDROID_performance_metricsprecisa ser ativada antes de chamar xrEnumeratePerformanceMetricsCounterPathsANDROID.
- instanceprecisa ser um identificador XrInstance válido
- counterPathCountOutputprecisa ser um ponteiro para um valor- uint32_t
- Se counterPathCapacityInputnão for 0,counterPathsprecisa ser um ponteiro para uma matriz de valorescounterPathCapacityInputXrPath
Códigos de retorno
- XR_SUCCESS
- XR_ERROR_FUNCTION_UNSUPPORTED
- XR_ERROR_VALIDATION_FAILURE
- XR_ERROR_RUNTIME_FAILURE
- XR_ERROR_HANDLE_INVALID
- XR_ERROR_INSTANCE_LOST
- XR_ERROR_SIZE_INSUFFICIENT
A função xrSetPerformanceMetricsStateANDROID é definida como:
XrResult xrSetPerformanceMetricsStateANDROID(
    XrSession                                   session,
    const XrPerformanceMetricsStateANDROID*     state);
Descrições dos parâmetros
- sessioné um identificador XrSession criado anteriormente com xrCreateSession.
- stateé um ponteiro para uma estrutura XrPerformanceMetricsStateANDROID.
A função xrSetPerformanceMetricsStateANDROID ativa ou desativa o sistema de métricas de desempenho.
Uso válido (implícito)
- A extensão XR_ANDROID_performance_metricsprecisa ser ativada antes de chamar xrSetPerformanceMetricsStateANDROID.
- sessionprecisa ser um identificador XrSession válido
- stateprecisa ser um ponteiro para uma estrutura XrPerformanceMetricsStateANDROID válida.
Códigos de retorno
- XR_SUCCESS
- XR_SESSION_LOSS_PENDING
- XR_ERROR_FUNCTION_UNSUPPORTED
- XR_ERROR_VALIDATION_FAILURE
- XR_ERROR_RUNTIME_FAILURE
- XR_ERROR_HANDLE_INVALID
- XR_ERROR_INSTANCE_LOST
- XR_ERROR_SESSION_LOST
A função xrGetPerformanceMetricsStateANDROID é definida como:
XrResult xrGetPerformanceMetricsStateANDROID(
    XrSession                                   session,
    XrPerformanceMetricsStateANDROID*           state);
Descrições dos parâmetros
- sessioné um identificador XrSession criado anteriormente com xrCreateSession.
- stateé um ponteiro para uma estrutura XrPerformanceMetricsStateANDROID.
A função xrGetPerformanceMetricsStateANDROID recebe o estado atual do sistema de métricas de desempenho.
Uso válido (implícito)
- A extensão XR_ANDROID_performance_metricsprecisa ser ativada antes de chamar xrGetPerformanceMetricsStateANDROID.
- sessionprecisa ser um identificador XrSession válido
- stateprecisa ser um ponteiro para uma estrutura XrPerformanceMetricsStateANDROID.
Códigos de retorno
- XR_SUCCESS
- XR_SESSION_LOSS_PENDING
- XR_ERROR_FUNCTION_UNSUPPORTED
- XR_ERROR_VALIDATION_FAILURE
- XR_ERROR_HANDLE_INVALID
- XR_ERROR_INSTANCE_LOST
- XR_ERROR_SESSION_LOST
A função xrQueryPerformanceMetricsCounterANDROID é definida como:
XrResult xrQueryPerformanceMetricsCounterANDROID(
    XrSession                                   session,
    XrPath                                      counterPath,
    XrPerformanceMetricsCounterANDROID*         counter);
Descrições dos parâmetros
- sessioné um identificador XrSession criado anteriormente com xrCreateSession.
- counterPathé um caminho de contador de métricas de performance válido.
- counteré um ponteiro para uma estrutura XrPerformanceMetricsCounterANDROID.
A função xrQueryPerformanceMetricsCounterANDROID consulta um contador de métricas de desempenho.
O aplicativo precisa ativar o sistema de métricas de desempenho chamando xrSetPerformanceMetricsStateANDROID antes de consultar as métricas usando xrQueryPerformanceMetricsCounterANDROID.
Uso válido (implícito)
- A extensão XR_ANDROID_performance_metricsprecisa ser ativada antes de chamar xrQueryPerformanceMetricsCounterANDROID.
- sessionprecisa ser um identificador XrSession válido
- counterprecisa ser um ponteiro para uma estrutura XrPerformanceMetricsCounterANDROID.
Códigos de retorno
- XR_SUCCESS
- XR_SESSION_LOSS_PENDING
- XR_ERROR_FUNCTION_UNSUPPORTED
- XR_ERROR_VALIDATION_FAILURE
- XR_ERROR_RUNTIME_FAILURE
- XR_ERROR_HANDLE_INVALID
- XR_ERROR_INSTANCE_LOST
- XR_ERROR_SESSION_LOST
- XR_ERROR_PATH_UNSUPPORTED
- XR_ERROR_PATH_INVALID
O OpenXR™ e o logotipo do OpenXR são marcas registradas do The Khronos Group Inc. e estão registrados como marca registrada na China, na União Europeia, no Japão e no Reino Unido.
