Chủ đề này mô tả cách khắc phục các sự cố thường gặp khi sử dụng Android GPU Inspector (AGI) .
Đặt lại chế độ cài đặt AGI
AGI lưu trữ các chế độ cài đặt trong tệp ~/.agic
.
Việc xóa tệp này sẽ xóa tất cả chế độ cài đặt AGI, bao gồm cả danh sách
dấu vết đã mở gần đây và kết quả xác thực thiết bị.
AGI không hoạt động được trên một số thiết bị
Hãy đảm bảo rằng thông tin thiết lập của bạn đáp ứng tất cả yêu cầu.
Những thao tác sau cũng có thể giúp ích:
Dừng mọi chương trình có thể tương tác với thiết bị qua ADB, chẳng hạn như Android Studio.
Bật tuỳ chọn
Stay awake
(trong phần Tuỳ chọn cho nhà phát triển trên Android) để ngăn chặn các sự cố phát sinh khi màn hình thiết bị tắt do chế độ ngủ.
Trình phân tích hệ thống không báo cáo hoạt động GPU cho các trò chơi OpenGL ES
Hiện tại, chỉ bộ đếm GPU được hỗ trợ khi bạn theo dõi OpenGL ES . Thông tin về hoạt động GPU cho các ứng dụng OpenGL ES đang hoạt động phát triển ứng dụng.
Trình phân tích khung hình không hoạt động được trên một số trò chơi Vulkan
Điều đầu tiên cần xác minh là trò chơi của bạn sử dụng Vulkan đúng cách. Sử dụng Lớp xác thực Vulkan đồng thời đảm bảo rằng trò chơi của bạn không đưa ra lỗi hoặc cảnh báo.
Nếu xảy ra lỗi xác thực Vulkan, thì trình phân tích khung hình AGI sẽ không được hỗ trợ để làm việc.
Lỗi trò chơi khi tạo dấu vết trình phân tích khung hình
Nếu trò chơi chạy thành công mà không cần AGI nhưng không chạy được khi tạo khung hình theo dõi hồ sơ, trò chơi có thể đang phát triển một quy trình khác trong quá trình khởi động trình tự. Trong trường hợp đó, bạn cần chỉ định tên của quy trình cần theo dõi trong "Tên quy trình" trong tùy chọn dấu vết.
Để xác định vấn đề này, bạn có thể kiểm tra kết quả logcat trong khi tạo dấu vết và xác minh xem một quy trình khác có đang bắt đầu hay không:
# 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
Hầu hết trò chơi chỉ có một quy trình, ví dụ ở trên cho thấy những điều cần biết trò chơi có nhiều quy trình.
Trò chơi bắt đầu trong một quy trình chính có tên com.example.mygame
, sau đó phát triển nhánh một
quy trình mới có tên com.example.mygame:GameProcess
.
Nếu quá trình kết xuất trò chơi thực tế xảy ra trong quá trình thứ hai, thì bạn phải cho biết
AGI cho biết đây là quá trình bạn muốn theo dõi.
Bạn có thể thực hiện việc này bằng cách nhập tên của quy trình vào trường Process name
của
hộp thoại tuỳ chọn theo dõi.
Không chơi được trò chơi sau khi sử dụng AGI
Nếu dấu vết không chấm dứt đúng cách, AGI có thể để lại một số cài đặt Android trong trạng thái có thể làm gián đoạn các lần chạy tiếp theo của ứng dụng. Các chế độ cài đặt đó là:
Các chế độ cài đặt liên quan đến lớp Vulkan:
enable_gpu_debug_layers
gpu_debug_app
gpu_debug_layers
gpu_debug_layer_app
Chế độ cài đặt liên quan đến ANGLE:
angle_debug_package
angle_gl_driver_selection_values
angle_gl_driver_selection_pkgs
Nếu ứng dụng của bạn gặp bất kỳ vấn đề nào sau khi sử dụng AGI, bạn có thể thử xoá những vấn đề đó chế độ cài đặt bằng các lệnh adb sau:
# 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
Trò chơi của bạn trông khác khi khởi chạy qua AGI trong khi tạo dấu vết hồ sơ khung hình
Để tạo dấu vết hồ sơ khung hình, AGI sẽ chặn các lệnh gọi API đồ hoạ do có thể ảnh hưởng đến quá trình kết xuất trò chơi.
AGI ghi lại các cuộc gọi Vulkan. Đối với các trò chơi OpenGL ES, AGI dựa trên ANGLE để dịch OpenGL ES sang Vulkan. Nếu trò chơi của bạn có giao diện khác (ví dụ: một số màu không phải là màu bạn mong đợi) khi bạn khởi chạy qua AGI, thì đó có thể là lỗi trong AGI hoặc ANGLE. Bạn có thể giúp chúng tôi hiểu rõ hơn về nguyên nhân gốc của vấn đề bằng cách hãy thử làm như sau.
Trò chơi trong Vulkan: theo dõi bằng tất cả tiện ích Vulkan được hỗ trợ
Tùy chọn theo dõi Include Unknown Extensions (Bao gồm tiện ích không xác định) kiểm soát xem AGI có bao gồm cả các tiện ích Vulkan mà tính năng này không hỗ trợ. (Duyệt qua danh sách các tiện ích được hỗ trợ.)
Nếu ứng dụng của bạn sử dụng một tiện ích không được AGI hỗ trợ, thì bạn có thể gặp phải hành vi không mong muốn, bao gồm các lỗi nhỏ hoặc sự cố, khi phát lại dấu vết.
Hãy thử bật tuỳ chọn này, sau đó chạy một dấu vết trình phân tích tài nguyên khung khác. Nếu trò chơi hiển thị như mong đợi với tuỳ chọn được bật, trò chơi có thể dựa vào Vulkan không được AGI hỗ trợ.
Trò chơi OpenGL ES: chỉ chạy với ANGLE
Bạn có thể chạy trò chơi OpenGL ES bằng ANGLE nhưng không dùng AGI để xem có lỗi kết xuất hình ảnh xuất phát từ một sự cố trong ANGLE.
Nếu bạn đã thử tạo một dấu vết hồ sơ khung hình OpenGL ES của mình
sau đó, AGI đã cài đặt ANGLE trên thiết bị của bạn. Gói ANGLE được sử dụng
AGI có tên là org.chromium.angle.agi
.
Để buộc trò chơi chạy trên ANGLE, hãy dùng các lệnh sau:
# 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
Nếu những chế độ cài đặt này khiến trò chơi hiển thị khác nhau thì có thể đó là do lỗi trong ANGLE chứ không phải AGI. Nếu các chế độ cài đặt này cho thấy trò chơi hiển thị chính xác, nhưng khác khi tạo dấu vết AGI thì có thể đó là lỗi trong AGI.
Bạn có thể báo cáo lỗi AGI bằng cách tạo một Vấn đề GitHub.