Gỡ lỗi ảnh động giật

Một trong những vấn đề khó khăn nhất đối với nhà phát triển ứng dụng là việc đảm bảo ảnh động mượt mà, không xảy ra sự cố và không có hiện tượng giật. Điều này đặc biệt khó gỡ lỗi khi hệ thống cũng đang thực hiện các tác vụ trong nền tốn nhiều tài nguyên. Không có cách nào dễ dàng để xác định xem hiện tượng giật là do ứng dụng hay hệ thống gây ra. Tuy nhiên, có một công cụ phân tích tài nguyên có thể giúp bạn xác định nguồn hành vi xấu có thể xảy ra.

Hiển thị trên ChromeOS

Một ứng dụng được tinh chỉnh, chẳng hạn như trò chơi, thường sử dụng quy trình lưu vào bộ đệm kép để duy trì thời gian phản hồi của người dùng ở mức thấp nhất có thể. Tuy nhiên, có nhiều yếu tố có thể làm giảm hiệu suất. Ví dụ: nếu việc kết xuất một khung mất quá nhiều thời gian, thì kết quả kết xuất sẽ chưa sẵn sàng cho lần hoán đổi vùng đệm tiếp theo và do đó, khung trước đó sẽ lặp lại.

Sau đó, trình kết xuất không thể bắt đầu kết xuất khung hình tiếp theo, gây ra nhiều vấn đề hơn nữa. Trường hợp này quen thuộc với các nhà phát triển thiết bị di động Android; khi một ứng dụng chạy trên ChromeOS, ngữ cảnh thậm chí còn phức tạp hơn.

Một ứng dụng chạy trên máy tính không kết xuất trực tiếp vào khung hiển thị của màn hình. Thay vào đó, phương thức này sẽ kết xuất dữ liệu thành một hoạ tiết. Thường có nhiều ứng dụng, mỗi ứng dụng kết xuất đồ hoạ của ứng dụng đó thành một kết cấu (texture). Hệ thống xây dựng khung hiển thị trên màn hình bằng cách sử dụng trình tổng hợp để kết hợp tất cả hoạ tiết vào một hình ảnh máy tính duy nhất.

Trình tổng hợp hoạt động minh bạch ở chế độ nền. Tuy nhiên, hệ thống sẽ triển khai độ trễ một khung hình để tối đa hoá việc sử dụng quy trình GPU. Trong một thế giới lý tưởng, điều này có thể không cần thiết, nhưng giúp làm mượt mà sự biến động về hiệu suất của hệ thống và giúp cân bằng tải bất đối xứng.

Khi hệ điều hành hoạt động rất mạnh, GPU có thể bị ép chặt. Có thể có độ trễ từ thời điểm khung hình kết xuất cho đến thời điểm khung hình đó xuất hiện trên màn hình. Tuỳ thuộc vào phần cứng, hệ thống có thể sử dụng chức năng lưu vào bộ đệm tăng gấp bốn lần để bù. Ngay cả khi lưu vào bộ đệm sâu hơn, quy trình kết xuất đồ hoạ vẫn có thể gặp sự cố.

Trình theo dõi đồ hoạ ARC

ChromeOS có một công cụ phân tích tài nguyên cho biết cách các vùng đệm đang phân phối qua hệ thống, thời điểm hoán đổi bộ nhớ, mức độ bận của CPU/GPU và hoạt động của ứng dụng tại một thời điểm nhất định, như minh hoạ trong hình sau:

Thiết lập trình phân tích

Để sử dụng trình phân tích tài nguyên, bạn phải chạy M75 trở lên. Để đạt kết quả tốt nhất, hãy dùng thiết bị Intel.

Trước khi sử dụng trình phân tích tài nguyên, hãy tạo một ứng dụng có dấu vết. Thêm Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>); vào mã của bạn ở bất cứ nơi nào bạn muốn đưa dấu vết vào. Sử dụng Event bắt đầu bằng tiền tố customTrace. Tiền tố này không xuất hiện trong thông báo theo dõi.

Để thiết lập trình phân tích tài nguyên, hãy làm theo các bước sau:

  1. Bật chế độ nhà phát triển.
  2. Bật chế độ cài đặt Chrome rồi bật công cụ trực quan hoá vùng đệm đồ hoạ ARC.
  3. Chuyển đến chrome://arc-graphics-tracing.

Chạy trình phân tích

  1. Chọn dừng khi có hiện tượng giật.
  2. Chạy ứng dụng Android.
  3. Khi ứng dụng Android đang hoạt động và được lấy tiêu điểm, hãy nhấn tổ hợp phím Control+Shift+G.

Khi hiện tượng giật xảy ra, một cửa sổ trình duyệt sẽ bật lên. Sử dụng phím WS để thu phóng và thu nhỏ dòng thời gian.