Trình gỡ lỗi
Gỡ lỗi bằng lớp xác thực
Vulkan được thiết kế để mang lại hiệu suất cao và mức hao tổn tài nguyên thấp. Để đạt được điều này, theo mặc định, API này chỉ cung cấp các chức năng kiểm tra và gỡ lỗi rất hạn chế. Nếu bạn làm sai, trình điều khiển thường sẽ gặp sự cố thay vì trả về mã lỗi hoặc thậm chí tệ hơn, trình điều khiển có vẻ như hoạt động trên thẻ đồ họa của bạn nhưng hoàn toàn không thành công trên các thẻ khác.
Để cho phép kiểm tra toàn diện trong quá trình phát triển, Vulkan cung cấp các lớp xác thực. Đây là các đoạn mã có thể chèn giữa API và trình điều khiển đồ hoạ để làm những việc như chạy chế độ kiểm tra bổ sung đối với các tham số hàm và theo dõi các vấn đề về quản lý bộ nhớ. Bạn có thể bật các lớp xác thực trong quá trình phát triển và tắt hoàn toàn các lớp đó khi phát hành ứng dụng mà không có mức hao tổn.
Bất kỳ ai cũng có thể viết các lớp xác thực, nhưng Khronos cung cấp một bộ tiêu chuẩn duy nhất có tên là VK_LAYER_KHRONOS_validation
. Hãy xem phần Các lớp xác thực Vulkan trên Android trên trang Android NDK để bật lớp xác thực trong ứng dụng của bạn.
RenderDoc
RenderDoc là một công cụ nguồn mở mạnh mẽ khác cho phép bạn chụp khung hình để kiểm tra và phân tích. Đây là một công cụ rất mạnh mẽ được các lập trình viên đồ hoạ sử dụng để gỡ lỗi các cảnh được kết xuất. API này hỗ trợ tốt Vulkan trên Android mặc dù bạn phải đặt ứng dụng là có thể gỡ lỗi để ứng dụng hoạt động.
Để biết thông tin về cách thiết lập và sử dụng RenderDoc trên ứng dụng Android, hãy xem bài viết Cách sử dụng RenderDoc trên Android.
Thư viện chụp / phát lại
GfReconstruct
GFXReconstruct là một dự án nguồn mở cung cấp các công cụ để ghi lại và phát lại các lệnh gọi API đồ hoạ do một ứng dụng thực thi. Sau này, bạn có thể phát lại dấu vết đã ghi lại để tạo lại hành vi đồ hoạ cụ thể của ứng dụng đã chụp. Một trong những ưu điểm chính của GfReconstruct là cho phép bạn sử dụng nó trên ứng dụng đã phát hành (khi bạn đã tắt android:debuggable).
Để biết thêm thông tin, hãy truy cập kho lưu trữ của dự án. Bạn có thể xem thông tin thiết lập và sử dụng cho Vulkan trên Android trong bài viết GFReconstruct API Capture and Replay for Android (Thu thập và phát lại API GFReconstruct cho Android).
Xin lưu ý rằng các tệp theo dõi không di chuyển được, nghĩa là bạn không thể ghi lại tệp trên một thiết bị và phát lại trên một thiết bị khác (với phiên bản hệ điều hành, bộ vi mạch hoặc thậm chí là phiên bản trình điều khiển khác).
Trình phân tích tài nguyên
Android GPU Inspector (AGI)
Android GPU Inspector (AGI) là một trình phân tích đồ hoạ được tạo cho Android bao gồm một System Profile (Hồ sơ hệ thống) và một Frame Profiler (Trình phân tích khung hình). API này cung cấp thông tin lập hồ sơ cấp cao, giúp bạn hiểu được hồ sơ hiệu suất của trò chơi và xác định điểm tắc nghẽn.
Để tải AGI xuống và tìm hiểu cách sử dụng, hãy truy cập trang web Android GPU Inspector.
Trình phân tích tài nguyên trong Android Studio
Trình phân tích tài nguyên trong Android Studio là một công cụ hữu ích giúp bạn phân tích hiệu suất của ứng dụng. Tuy nhiên, tính năng này không đặc biệt nhắm đến việc phân tích đồ hoạ. Gói này bao gồm Trình phân tích CPU, Trình phân tích bộ nhớ, Trình phân tích mạng, Trình phân tích năng lượng, Trình phân tích năng lượng và Trình theo dõi sự kiện.
Để biết thêm thông tin về cách thiết lập và sử dụng Trình phân tích tài nguyên Android Studio, hãy xem phần Phân tích hiệu suất của ứng dụng.
Trình phân tích tài nguyên OEM
Các công cụ trong phần này là dành riêng cho OEM và có thể không hoạt động trên các thiết bị chạy trên chip khác.
Công cụ ARM Performance Studio dành cho thiết bị di động
Arm Performance Studio dành cho thiết bị di động là tên mới của Arm Mobile Studio. Đây là một bộ công cụ bao gồm Trình phân tích đồ hoạ và Frame Advisor để giúp bạn xác định và khắc phục các vấn đề về hiệu suất trên GPU ARM.
Để biết thêm thông tin, hãy xem trang web Arm Performance Studio for Mobile.
ARM PerfDoc dành cho GPU Mali
PerfDoc là một lớp Vulkan được phát triển để xác thực ứng dụng theo các phương pháp hay nhất về GPU Mali của ARM. Kể từ đó, lớp này được hợp nhất vào VK_LAYER_KHRONOS_validate và về cơ bản là một phần của lớp xác thực Vulkan tiêu chuẩn.
Để biết thông tin về cách sử dụng lớp này, hãy xem phần Gỡ lỗi bằng lớp xác thực.
Trình phân tích tài nguyên Modem Snapdragon
Trình phân tích tài nguyên Snapdragon là một phần mềm phân tích tài nguyên do Qualcomm phát triển dành cho các nhà phát triển ứng dụng để phân tích hiệu suất của CPU, GPU, DSP, bộ nhớ, nguồn điện, nhiệt và mạng nhằm xác định điểm tắc nghẽn trên chipset của họ.
Để biết thêm thông tin, hãy xem bài viết Trình phân tích tài nguyên Snapdragon trên Mạng nhà phát triển Qualcomm.
Samsung GPUWatch
GPUWatch của Samsung là một công cụ để quan sát hoạt động của GPU trên các thiết bị Samsung. Không giống như các công cụ khác, bạn có thể sử dụng công cụ này ngay trên thiết bị di động. Vì vậy, việc kiểm tra hiệu suất của ứng dụng ngay lập tức ngay cả khi bạn không có quyền truy cập vào một máy tính lưu trữ khác sẽ rất hữu ích.
Để biết thêm thông tin về cách bật tính năng này, hãy xem Hướng dẫn sử dụng.
PVRTune (Chỉnh PVR)
PVRTune của Imagination Technologies cho phép nhà phát triển phân tích tài nguyên cho các ứng dụng trên phần cứng PowerVR theo thời gian thực với một loạt các bộ đếm và chỉ số. API này cũng cho phép lưu phiên để phân tích ở cấp thấp hơn và phát hiện các nút thắt cổ chai về hiệu suất.
Để biết thêm thông tin về cách sử dụng PVRTune, hãy xem phần Hướng dẫn.
Công cụ di chuyển
Chuyển đổi chương trình đổ bóng từ GLSL sang SPIR-V
API Vulkan yêu cầu cung cấp các chương trình đổ bóng ở định dạng trung gian của tệp nhị phân SPIR-V. Quy ước này khác với OpenGL ES, trong đó, bạn có thể gửi mã nguồn được viết bằng Ngôn ngữ tô bóng OpenGL (GLSL) dưới dạng chuỗi văn bản.
NDK r12 trở lên tích hợp một thư viện thời gian chạy để biên dịch chương trình đổ bóng GLSL vào SPIR-V mà Vulkan có thể sử dụng. Bạn có thể sử dụng trình biên dịch shaderc để biên dịch các chương trình đổ bóng viết bằng GLSL thành SPIR-V. Nếu trò chơi của bạn sử dụng HLSL, thì DirectXShaderCompiler sẽ hỗ trợ đầu ra SPIR-V.
Thông thường, bạn sẽ cần biên dịch các chương trình đổ bóng khi không có kết nối mạng trong quá trình tạo tài sản cho trò chơi và đưa các mô-đun SPIR-V vào tài sản trong thời gian chạy.
Để biết thêm thông tin về quy trình biên dịch chương trình đổ bóng cho ứng dụng Vulkan của bạn, hãy xem phần trình biên dịch chương trình đổ bóng của Vulkan trên Android trong phần Android NDK.
Tính năng nâng cao
Tích hợp Android Frame Pacing (Tốc độ khung hình Android) vào trình kết xuất Vulkan
Thư viện Android Frame Pacing (còn gọi là Swappy) giúp trò chơi Vulkan đạt được khả năng kết xuất hình ảnh mượt mà và tốc độ chính xác để giữ vòng lặp kết xuất trò chơi đồng bộ với hệ thống hiển thị phụ của hệ điều hành và phần cứng hiển thị cơ bản.
Tốc độ chính xác sẽ loại bỏ các cấu phần phần mềm hình ảnh (còn gọi là hiện tượng xé hình), tối ưu hoá mức tiêu thụ pin thông qua quá trình đồng bộ hoá giữa việc làm mới màn hình và trình bày khung hình, đồng thời loại bỏ hiện tượng giật bằng cách ổn định tốc độ khung hình. Để tìm hiểu thêm về tầm quan trọng của tốc độ khung hình, hãy xem phần Frame Pacing Library (Thư viện Tốc độ khung hình) trong AGDK.
Để biết thêm thông tin về cách tích hợp tốc độ khung hình vào trò chơi, hãy xem bài viết Tích hợp Android Frame Pacing vào trình kết xuất Vulkan.
Xử lý hướng thiết bị bằng chế độ xoay trước trong Vulkan
Khả năng xử lý xoay giao diện bên ngoài ứng dụng có thể không được tự do. Ngay cả trên một số thiết bị cấp cao hơn có Bộ xử lý hiển thị (DPU) chuyên dụng, bạn vẫn có thể phải chịu một mức hao tổn hiệu suất (có thể đo lường được) và tác động sẽ phụ thuộc vào việc ứng dụng của bạn bị ràng buộc bởi CPU hay GPU.
Vulkan cung cấp cho nhà phát triển khả năng chỉ định nhiều thông tin hơn cho các thiết bị về trạng thái kết xuất so với OpenGL. Một trong những thông tin đó là hướng thiết bị và mối quan hệ với hướng giao diện kết xuất. Với chức năng này, bạn có thể triển khai chế độ xoay trước để khai thác tối đa Vulkan trên Android.
Để biết thêm thông tin về cách xử lý hiệu quả việc xoay thiết bị trên ứng dụng Vulkan, hãy xem bài viết Xử lý hướng thiết bị bằng chế độ xoay trước trong Vulkan và ứng dụng minh hoạ đi kèm.
Tối ưu hoá khi độ chính xác giảm
Định dạng số của dữ liệu đồ hoạ và các phép tính trong chương trình đổ bóng có thể có tác động đáng kể đến hiệu suất của trò chơi. Phần lớn các phép tính và dữ liệu trong đồ hoạ 3D hiện đại đều sử dụng số có dấu phẩy động. Vulkan trên Android sử dụng các số có dấu phẩy động với kích thước 32 hoặc 16 bit. Số có dấu phẩy động 32 bit thường được coi là có độ chính xác đơn hoặc độ chính xác tối đa. Mặc dù kiểu dấu phẩy động 64 bit được xác định trong Vulkan, nhưng kiểu dấu phẩy động này thường không được hỗ trợ và bạn không nên sử dụng.
Hãy xem phần Tối ưu hoá khi độ chính xác giảm để biết thông tin về cách tối ưu hoá ứng dụng Vulkan nhằm đạt được hiệu suất tốt nhất trong các phép tính số học của bạn.