AGI 문제 해결

이 주제에서는 Android GPU 검사기를 사용할 때 발생하는 일반적인 문제를 해결하는 방법을 설명합니다. (AGI)

AGI 설정 재설정

AGI는 설정을 ~/.agic 파일에 저장합니다. 이 파일을 삭제하면 최근에 열어 본 트레이스 및 기기 유효성 검사 결과

일부 기기에서 AGI가 실패함

설정이 요구사항을 충족합니다.

다음도 도움이 될 수 있습니다.

  • ADB를 통해 기기와 상호작용할 수 있는 프로그램(예: Android)을 중지합니다. 있습니다.

  • Android의 개발자 옵션 아래에서 Stay awake 옵션을 사용 설정하면 수면 모드로 인해 기기 화면이 꺼질 때 발생하는 문제를 방지합니다.

시스템 프로파일러가 OpenGL ES 게임의 GPU 활동을 보고하지 않음

현재는 OpenGL ES를 추적할 때 GPU 카운터만 지원됩니다. 애플리케이션입니다. OpenGL ES 애플리케이션의 GPU 활동 정보가 활성 상태입니다. 살펴봤습니다

일부 Vulkan 게임에서 프레임 프로파일러가 실패함

먼저 게임에서 Vulkan을 올바르게 사용하는지 확인해야 합니다. 사용 Vulkan 유효성 검사 계층 게임에서 오류나 경고가 발생하지 않는지 확인합니다

Vulkan 유효성 검사 오류가 있는 경우 AGI 프레임 프로파일러가 예상되지 않음 직장에서 출근하세요.

프레임 프로파일러 트레이스 생성 시 게임 실패

게임이 AGI 없이 실행되었지만 프레임을 만들 때 실행되지 않는 경우 게임 시작 중에 다른 프로세스를 포크할 수 있음 시퀀스입니다. 이 경우 코드에서 추적할 프로세스의 이름을 '프로세스 이름' trace 옵션의 필드입니다.

이 문제를 파악하려면 트레이스를 만드는 동안 logcat 출력을 확인하면 됩니다. 다른 프로세스가 시작되는지 확인합니다.

# Clear the logcat output
adb logcat -c

## Use AGI to attempt to create a frame profile trace

Look at the logcat output to identify the processes that are running AGI. 

adb logcat | grep "this process name"
I GAPID   : gapii [gapii/cc/spy.cpp:109] this process name: com.example.mygame
I GAPID   : gapii [gapii/cc/spy.cpp:109] this process name: com.example.mygame:GameProcess

대부분의 게임에는 하나의 프로세스만 있습니다. 위의 예는 게임에서 예상되는 결과를 보여줍니다. 있습니다.

게임은 com.example.mygame라는 기본 프로세스에서 시작된 후 이름이 com.example.mygame:GameProcess인 새 프로세스입니다. 실제 게임 렌더링이 두 번째 프로세스에서 발생하면 추적하려는 프로세스인 AGI입니다. 이렇게 하려면 Process name 필드에 프로세스 이름을 입력합니다. 트레이스 옵션 대화상자를 표시합니다.

AGI 사용 후 게임 실패

트레이스가 제대로 종료되지 않으면 AGI가 일부 Android 설정을 그대로 유지할 수 있습니다. 앱의 후속 실행을 중단할 수 있는 상태입니다. 이 설정은 다음과 같습니다.

  • Vulkan 계층 관련 설정:

    • enable_gpu_debug_layers

    • gpu_debug_app

    • gpu_debug_layers

    • gpu_debug_layer_app

  • ANGLE 관련 설정:

    • angle_debug_package

    • angle_gl_driver_selection_values

    • angle_gl_driver_selection_pkgs

AGI 사용 후 앱에 문제가 발생하면 다음을 해결해 보세요. 설정을 다음 adb 명령어로 대체합니다.

# Vulkan layers
adb shell settings delete global enable_gpu_debug_layers
adb shell settings delete global gpu_debug_app
adb shell settings delete global gpu_debug_layers
adb shell settings delete global gpu_debug_layer_app
# ANGLE
adb shell settings delete global angle_debug_package
adb shell settings delete global angle_gl_driver_selection_values
adb shell settings delete global angle_gl_driver_selection_pkgs

프레임 프로필 트레이스를 만드는 동안 AGI를 통해 실행하면 게임이 다르게 보입니다.

프레임 프로필 트레이스를 만들기 위해 AGI는 게임 렌더링에 영향을 미칠 수 있습니다.

AGI는 Vulkan 호출을 캡처합니다. OpenGL ES 게임의 경우 AGI는 ANGLE을 사용하여 OpenGL ES 변환 Vulkan으로 푸시합니다. 게임이 다르게 보일 때 (예: 일부 색상이 예상과 다른 경우) AGI를 통해 실행하는 경우 AGI 또는 ANGLE의 버그일 수 있습니다. Google에서 문제의 근본 원인을 파악하는 데 시도해 볼 수 있습니다

Vulkan 게임: 모든 Vulkan 확장 프로그램이 지원되는 추적

알 수 없는 확장 프로그램 포함 추적 옵션은 AGI가 확장되어야 하는지 여부를 제어합니다. 지원하지 않는 Vulkan 확장 프로그램을 포함합니다. ( 지원되는 확장 프로그램 목록을 참고하세요.)

앱에서 AGI에서 지원하지 않는 확장 프로그램을 사용하는 경우 미묘한 오류나 비정상 종료 등 원치 않는 동작이 trace를 반환합니다.

이 옵션을 사용 설정한 후 다른 프레임 프로파일러 트레이스를 실행해 보세요. 경기가 옵션이 사용 설정된 상태에서 예상대로 표시되며 게임이 Vulkan을 사용할 수 있음 확장 프로그램을 사용할 수 있습니다.

OpenGL ES 게임: ANGLE로만 실행

ANGLE은 사용하되 AGI는 사용하지 않고 OpenGL ES 게임을 실행하여 잘못된 것인지 확인할 수 있습니다. ANGLE의 문제에서 비롯됩니다

OpenGL ES의 프레임 프로필 트레이스를 이미 만들려고 한 경우 게임을 하고 있다면 AGI가 이미 기기에 ANGLE을 설치했습니다. 배포에서 사용되는 ANGLE 패키지는 AGI의 이름은 org.chromium.angle.agi입니다.

게임을 ANGLE에서 강제 실행하려면 다음 명령어를 사용합니다.

# Make sure that the AGI capture layer will be ignored
adb shell settings delete global enable_gpu_debug_layers
# Force the package com.example.mygame to use ANGLE
adb shell settings put global angle_debug_package org.chromium.angle.agi
adb shell settings put global angle_gl_driver_selection_values angle
adb shell settings put global angle_gl_driver_selection_pkgs com.example.mygame

설정에 따라 게임이 다르게 표시된다면 ANGLE을 사용하며 AGI가 아닙니다. 이러한 설정에서 게임이 올바로 보이지만 AGI 트레이스를 생성하는 동안 다르다면 AGI의 버그일 가능성이 높습니다.

다음을 생성하여 AGI 버그를 신고할 수 있습니다. GitHub 문제