String Nama
XR_ANDROID_performance_metrics
Jenis Ekstensi
Perpanjangan instance
Registered Extension Number
466
Tanggal Terakhir Diubah
2024-09-06
Status IP
Tidak ada klaim IP yang diketahui.
Dependensi Ekstensi dan Versi
Kontributor
Dmitry Kotov, Google
Levana Chen, Google
Jared Finder, Google
Spencer Quin, Google
Ringkasan
Ekstensi ini menyediakan API untuk menghitung dan membuat kueri berbagai penghitung metrik performa perangkat XR, komposer, dan aplikasi XR saat ini. Developer dapat melakukan analisis performa dan melakukan pengoptimalan yang ditargetkan ke aplikasi XR menggunakan penghitung metrik performa yang dikumpulkan. Aplikasi tidak boleh mengubah perilakunya berdasarkan pembacaan penghitung.
Penghitung metrik performa diatur ke dalam nilai
XrPath yang telah ditentukan sebelumnya, di jalur root
/perfmetrics_android. Aplikasi
dapat mengkueri penghitung yang tersedia melalui
xrEnumeratePerformanceMetricsCounterPathsANDROID. Berikut adalah daftar
jalur penghitung metrik performa yang mungkin disediakan di perangkat Android:
- /perfmetrics_android/app/cpu_frametime (milidetik, float) - waktu wallclock yang dihabiskan klien untuk memproses frame.
- /perfmetrics_android/app/gpu_frametime
(milidetik, float) - waktu wallclock yang dihabiskan klien untuk menunggu tugas GPU
selesai per frame. Catatan:
- Waktu tunggu yang tinggi dapat berarti GPU sedang sibuk dengan tugas lain, bukan selalu berarti bahwa klien ini melakukan terlalu banyak pekerjaan GPU.
- Waktu tunggu GPU dapat nol jika rendering sudah selesai saat diperiksa oleh kompositor.
- /perfmetrics_android/app/cpu_utilization
(persentase, float) - total rasio penggunaan CPU aplikasi yang dirata-ratakan dari waktu ke waktu.
- Nilai ini dapat lebih tinggi dari 100% pada prosesor multi-core.
- /perfmetrics_android/app/gpu_utilization (persentase) - rasio penggunaan GPU total aplikasi yang dirata-ratakan dari waktu ke waktu.
- /perfmetrics_android/app/motion_to_photon_latency (milidetik, float) - waktu yang dihabiskan dari peristiwa gerakan yang dimulai pengguna hingga pembaruan gambar fisik yang sesuai di layar.
- /perfmetrics_android/compositor/cpu_frametime (milidetik, float) - waktu wallclock yang dihabiskan komposer untuk memproses frame.
- /perfmetrics_android/compositor/gpu_frametime (milidetik, float) - waktu wallclock yang dihabiskan kompositor untuk menunggu tugas GPU selesai per frame.
- /perfmetrics_android/compositor/dropped_frame_count (bilangan bulat) - jumlah total frame yang dihapus dari semua aplikasi.
- /perfmetrics_android/compositor/frames_per_second (float) - jumlah frame kompositor yang digambar di perangkat per detik.
- /perfmetrics_android/device/cpu_utilization_average (persentase, float) - tingkat penggunaan CPU perangkat yang dirata-ratakan di semua core dan dirata-ratakan dari waktu ke waktu.
- /perfmetrics_android/device/cpu_utilization_worst (persentase, float) - rasio penggunaan CPU perangkat dari inti berperforma terburuk yang dirata-ratakan dari waktu ke waktu.
- /perfmetrics_android/device/cpu0_utilization hingga /perfmetrics_android/device/cpuX_utilization (persentase, float, X adalah jumlah core CPU dikurangi satu) - tingkat penggunaan CPU perangkat per core CPU yang dirata-ratakan dari waktu ke waktu.
- /perfmetrics_android/device/cpu_frequency (MHz, float) - frekuensi CPU perangkat yang dirata-ratakan di semua core dan dirata-ratakan dari waktu ke waktu.
- /perfmetrics_android/device/gpu_utilization (persentase, float) - rasio penggunaan GPU perangkat yang dirata-ratakan dari waktu ke waktu.
Setelah sesi dibuat, aplikasi dapat menggunakan xrSetPerformanceMetricsStateANDROID untuk mengaktifkan sistem metrik performa untuk sesi tersebut. Aplikasi dapat menggunakan xrQueryPerformanceMetricsCounterANDROID untuk mengkueri penghitung metrik performa pada sesi yang mengaktifkan sistem metrik performa, atau menggunakan xrGetPerformanceMetricsStateANDROID untuk mengkueri apakah sistem metrik performa diaktifkan.
Untuk mengaktifkan fungsi ekstensi ini, aplikasi harus meneruskan nama ekstensi ke xrCreateInstance menggunakan parameter XrInstanceCreateInfo::enabledExtensionNames seperti yang ditunjukkan di bagian Extensions.
Jenis Flag Baru
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;
Konstanta Enum Baru
Enumerasi XrStructureType diperluas dengan:
XR_TYPE_PERFORMANCE_METRICS_STATE_ANDROIDXR_TYPE_PERFORMANCE_METRICS_COUNTER_ANDROID
Enum Baru
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;
Struktur Baru
Struktur XrPerformanceMetricsStateANDROID ditentukan sebagai:
typedef struct XrPerformanceMetricsStateANDROID {
XrStructureType type;
void* next;
XrBool32 enabled;
} XrPerformanceMetricsStateANDROID;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur. Tidak ada struktur semacam itu yang ditentukan di OpenXR inti atau ekstensi ini.enabledditetapkan keXR_TRUEuntuk menunjukkan bahwa sistem metrik performa diaktifkan,XR_FALSEjika tidak, saat mendapatkan status. Saat menetapkan status, tetapkan keXR_TRUEuntuk mengaktifkan sistem metrik performa danXR_FALSEuntuk menonaktifkannya.
XrPerformanceMetricsStateANDROID disediakan sebagai input saat memanggil xrSetPerformanceMetricsStateANDROID untuk mengaktifkan atau menonaktifkan sistem metrik performa. XrPerformanceMetricsStateANDROID diisi sebagai parameter output saat memanggil xrGetPerformanceMetricsStateANDROID untuk membuat kueri apakah sistem metrik performa diaktifkan.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_performance_metricsharus diaktifkan sebelum menggunakan XrPerformanceMetricsStateANDROID typeharus berupaXR_TYPE_PERFORMANCE_METRICS_STATE_ANDROIDnextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai struktur
Struktur XrPerformanceMetricsCounterANDROID ditentukan sebagai:
typedef struct XrPerformanceMetricsCounterANDROID {
XrStructureType type;
void* next;
XrPerformanceMetricsCounterFlagsANDROID counterFlags;
XrPerformanceMetricsCounterUnitANDROID counterUnit;
uint32_t uintValue;
float floatValue;
} XrPerformanceMetricsCounterANDROID;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur. Tidak ada struktur semacam itu yang ditentukan di OpenXR inti atau ekstensi ini.counterFlagsadalah bitmask dari XrPerformanceMetricsCounterFlagsANDROID yang menjelaskan validitas anggota nilai.counterUnitadalah enum dari XrPerformanceMetricsCounterUnitANDROID yang menjelaskan satuan pengukuran.uintValueadalah nilai penghitung dalam formatuint32_t. Valid jikacounterFlagsberisiXR_PERFORMANCE_METRICS_COUNTER_UINT_VALUE_VALID_BIT_ANDROID.floatValueadalah nilai penghitung dalam formatfloat. Valid jikacounterFlagsberisiXR_PERFORMANCE_METRICS_COUNTER_FLOAT_VALUE_VALID_BIT_ANDROID.
XrPerformanceMetricsCounterANDROID diisi dengan memanggil xrQueryPerformanceMetricsCounterANDROID untuk membuat kueri informasi penghitung metrik performa real-time.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_performance_metricsharus diaktifkan sebelum menggunakan XrPerformanceMetricsCounterANDROID typeharus berupaXR_TYPE_PERFORMANCE_METRICS_COUNTER_ANDROIDnextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai strukturcounterFlagsharus berupa 0 atau kombinasi yang valid dari nilai XrPerformanceMetricsCounterFlagsANDROIDcounterUnitharus berupa nilai XrPerformanceMetricsCounterUnitANDROID yang valid
Fungsi Baru
Fungsi xrEnumeratePerformanceMetricsCounterPathsANDROID mencantumkan semua jalur penghitung metrik performa yang didukung oleh runtime, yang ditentukan sebagai:
XrResult xrEnumeratePerformanceMetricsCounterPathsANDROID(
XrInstance instance,
uint32_t counterPathCapacityInput,
uint32_t* counterPathCountOutput,
XrPath* counterPaths);
Deskripsi Parameter
instanceadalah handle XrInstance yang sebelumnya dibuat dengan xrCreateInstance.counterPathCapacityInputadalah kapasitas arraycounterPaths, atau 0 untuk menunjukkan permintaan guna mengambil kapasitas yang diperlukan.counterPathCountOutputdiisi oleh runtime dengan jumlahcounterPathsyang ditulis atau kapasitas yang diperlukan jikacounterPathCapacityInputtidak memadai.counterPathsadalah arrayXrPathyang diisi oleh runtime yang berisi semua penghitung metrik performa yang tersedia, tetapi dapat berupaNULLjikacounterPathCapacityInputadalah 0.- Lihat bagian Parameter Ukuran Buffer untuk mengetahui penjelasan
mendetail tentang pengambilan ukuran
counterPathsyang diperlukan.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_performance_metricsharus diaktifkan sebelum memanggil xrEnumeratePerformanceMetricsCounterPathsANDROID instanceharus berupa nama sebutan channel XrInstance yang validcounterPathCountOutputharus berupa pointer ke nilaiuint32_t- Jika
counterPathCapacityInputbukan 0,counterPathsharus berupa pointer ke array nilaiXrPathcounterPathCapacityInput
Kode Status
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SIZE_INSUFFICIENT
Fungsi xrSetPerformanceMetricsStateANDROID ditentukan sebagai:
XrResult xrSetPerformanceMetricsStateANDROID(
XrSession session,
const XrPerformanceMetricsStateANDROID* state);
Deskripsi Parameter
sessionadalah handle XrSession yang dibuat sebelumnya dengan xrCreateSession.stateadalah pointer ke struktur XrPerformanceMetricsStateANDROID.
Fungsi xrSetPerformanceMetricsStateANDROID mengaktifkan atau menonaktifkan sistem metrik performa.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_performance_metricsharus diaktifkan sebelum memanggil xrSetPerformanceMetricsStateANDROID sessionharus berupa nama sebutan channel XrSession yang validstateharus berupa pointer ke struktur XrPerformanceMetricsStateANDROID yang valid
Kode Status
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOST
Fungsi xrGetPerformanceMetricsStateANDROID ditentukan sebagai:
XrResult xrGetPerformanceMetricsStateANDROID(
XrSession session,
XrPerformanceMetricsStateANDROID* state);
Deskripsi Parameter
sessionadalah handle XrSession yang dibuat sebelumnya dengan xrCreateSession.stateadalah pointer ke struktur XrPerformanceMetricsStateANDROID.
Fungsi xrGetPerformanceMetricsStateANDROID mendapatkan status sistem metrik performa saat ini.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_performance_metricsharus diaktifkan sebelum memanggil xrGetPerformanceMetricsStateANDROID sessionharus berupa nama sebutan channel XrSession yang validstateharus berupa pointer ke struktur XrPerformanceMetricsStateANDROID
Kode Status
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOST
Fungsi xrQueryPerformanceMetricsCounterANDROID ditentukan sebagai:
XrResult xrQueryPerformanceMetricsCounterANDROID(
XrSession session,
XrPath counterPath,
XrPerformanceMetricsCounterANDROID* counter);
Deskripsi Parameter
sessionadalah handle XrSession yang dibuat sebelumnya dengan xrCreateSession.counterPathadalah jalur penghitung metrik performa yang valid.counteradalah pointer ke struktur XrPerformanceMetricsCounterANDROID.
Fungsi xrQueryPerformanceMetricsCounterANDROID membuat kueri penghitung metrik performa.
Aplikasi harus mengaktifkan sistem metrik performa dengan memanggil xrSetPerformanceMetricsStateANDROID sebelum membuat kueri metrik menggunakan xrQueryPerformanceMetricsCounterANDROID.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_performance_metricsharus diaktifkan sebelum memanggil xrQueryPerformanceMetricsCounterANDROID sessionharus berupa nama sebutan channel XrSession yang validcounterharus berupa pointer ke struktur XrPerformanceMetricsCounterANDROID
Kode Status
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_PATH_UNSUPPORTEDXR_ERROR_PATH_INVALID
OpenXR™ dan logo OpenXR adalah merek dagang yang dimiliki oleh The Khronos Group Inc. dan terdaftar sebagai merek dagang di China, Uni Eropa, Jepang, dan Inggris Raya.