Ad dizesi
XR_ANDROID_performance_metrics
Uzantı Türü
Örnek uzatma
Kayıtlı Uzatma Numarası
466
Son Değiştirilme Tarihi
2024-09-06
IP Durumu
Bilinen IP hak talepleri yok.
Uzantı ve Sürüm Bağımlılıkları
Katkıda bulunanlar
Dmitry Kotov, Google
Levana Chen, Google
Jared Finder, Google
Spencer Quin, Google
Genel Bakış
Bu uzantı, mevcut XR cihaz, derleyici ve XR uygulamasının çeşitli performans metriği sayıcılarını listelemek ve sorgulamak için API'ler sağlar. Geliştiriciler, toplanan performans metriği sayaçları ile performans analizi yapabilir ve XR uygulamasında hedeflenen optimizasyon yapabilir. Uygulama, sayaç okumalarına göre davranışını değiştirmemelidir.
Performans metriği sayaçları, /perfmetrics_android kök yolu altında önceden tanımlanmış XrPath
değerlerine göre düzenlenir. Bir uygulama, xrEnumeratePerformanceMetricsCounterPathsANDROID aracılığıyla mevcut sayaçları sorgulayabilir. Android cihazlarda sağlanabilecek performans metriği sayıcı yollarının listesi aşağıda verilmiştir:
- /perfmetrics_android/app/cpu_frametime (milisaniye, kayan nokta) - İstemcinin bir kareyi işlemek için harcadığı gerçek zaman.
- /perfmetrics_android/app/gpu_frametime (milisaniye, kayan nokta) - istemcinin, GPU çalışmasının kare başına tamamlanmasını beklerken harcadığı gerçek zaman. Notlar:
- Yüksek bekleme süresi, bu istemcinin çok fazla GPU çalışması yaptığı anlamına gelmez. GPU'nun diğer görevlerle meşgul olduğu anlamına gelebilir.
- Oluşturucu tarafından kontrol edildiğinde oluşturma işlemi zaten tamamlanmışsa GPU bekleme süresi sıfır olabilir.
- /perfmetrics_android/app/cpu_utilization
(yüzde, kayan nokta) - Zaman içinde ortalaması alınan toplam uygulama CPU kullanımı oranı.
- Çok çekirdekli işlemcilerde% 100'den yüksek olabilir.
- /perfmetrics_android/app/gpu_utilization (yüzde) - Uygulamanın zaman içinde ortalama GPU kullanım oranı.
- /perfmetrics_android/app/motion_to_photon_latency (milisaniye, kayan nokta) - kullanıcı tarafından başlatılan hareket etkinliğinden ekrandaki ilgili fiziksel görüntü güncellemesine kadar geçen süre.
- /perfmetrics_android/compositor/cpu_frametime (milisaniye, kayan nokta) - Bir kareyi işlemek için uyumlulaştırıcının harcadığı gerçek zaman.
- /perfmetrics_android/compositor/gpu_frametime (milisaniye, kayan nokta) - GPU çalışmasının kare başına tamamlanmasını beklerken uyumlulayıcının gerçek zamanlı olarak harcadığı süre.
- /perfmetrics_android/compositor/dropped_frame_count (tam sayı) - Tüm uygulamalardan atlanan karelerin toplam sayısı.
- /perfmetrics_android/compositor/frames_per_second (kayan nokta) - Cihazda saniyede oluşturulan kompozitör karelerinin sayısı.
- /perfmetrics_android/device/cpu_utilization_average (yüzde, kayan nokta) - tüm çekirdekler ve zaman içinde ortalama olarak cihazın CPU kullanımı oranı.
- /perfmetrics_android/device/cpu_utilization_worst (yüzde, kayan nokta) - Zaman içinde ortalama olarak en kötü performans gösteren çekirdeğin cihaz CPU kullanımı oranı.
- /perfmetrics_android/device/cpu0_utilization ile /perfmetrics_android/device/cpuX_utilization (yüzde, kayan nokta, X, CPU çekirdeklerinin sayısı eksi birdir) arasında: Zaman içinde ortalama CPU çekirdeği başına cihaz CPU kullanımı oranı.
- /perfmetrics_android/device/cpu_frequency (MHz, kayan nokta) - Tüm çekirdekler ve zaman içindeki ortalama cihaz CPU frekansı.
- /perfmetrics_android/device/gpu_utilization (yüzde, kayan nokta) - Zaman içinde ortalama cihaz GPU kullanımı oranı.
Bir oturum oluşturulduktan sonra uygulama, ilgili oturum için performans metrikleri sistemini etkinleştirmek üzere xrSetPerformanceMetricsStateANDROID işlevini kullanabilir. Uygulamalar, performans metrikleri sisteminin etkin olduğu bir oturumda performans metrikleri sayacını sorgulamak için xrQueryPerformanceMetricsCounterANDROID'ı veya performans metrikleri sisteminin etkin olup olmadığını sorgulamak için xrGetPerformanceMetricsStateANDROID'ı kullanabilir.
Bu uzantının işlevini etkinleştirmek için uygulama, Uzantılar bölümünde belirtildiği gibi XrInstanceCreateInfo::enabledExtensionNames parametresini kullanarak uzantının adını xrCreateInstance'e iletmelidir.
Yeni İşaret Türleri
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;
Yeni Enum Sabitleri
XrStructureType dizini aşağıdakilerle genişletildi:
XR_TYPE_PERFORMANCE_METRICS_STATE_ANDROID
XR_TYPE_PERFORMANCE_METRICS_COUNTER_ANDROID
Yeni Sıralamalar
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;
Yeni Yapılar
XrPerformanceMetricsStateANDROID yapısı şu şekilde tanımlanır:
typedef struct XrPerformanceMetricsStateANDROID {
XrStructureType type;
void* next;
XrBool32 enabled;
} XrPerformanceMetricsStateANDROID;
Üye Açıklamaları
type
, bu yapının XrStructureType değeridir.next
,NULL
veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.- Durum alınırken
enabled
, performans metrikleri sisteminin etkin olduğunu belirtmek içinXR_TRUE
olarak ayarlanır. Aksi takdirdeXR_FALSE
olarak ayarlanır. Durumu ayarlarken performans metrikleri sistemini etkinleştirmek içinXR_TRUE
, devre dışı bırakmak içinXR_FALSE
değerini ayarlayın.
Performans metrikleri sistemini etkinleştirmek veya devre dışı bırakmak için xrSetPerformanceMetricsStateANDROID çağrılırken XrPerformanceMetricsStateANDROID giriş olarak sağlanır. Performans metrikleri sisteminin etkin olup olmadığını sorgulamak için xrGetPerformanceMetricsStateANDROID çağrılırken XrPerformanceMetricsStateANDROID çıkış parametresi olarak doldurulur.
Geçerli Kullanım (Dolayı)
- XrPerformanceMetricsStateANDROID kullanılacaksa
XR_ANDROID_performance_metrics
uzantısı etkinleştirilmelidir. type
XR_TYPE_PERFORMANCE_METRICS_STATE_ANDROID
olmalıdırnext
NULL
veya yapı zincirindeki bir sonraki yapıya işaret eden geçerli bir işaretçi olmalıdır.
XrPerformanceMetricsCounterANDROID yapısı aşağıdaki gibi tanımlanır:
typedef struct XrPerformanceMetricsCounterANDROID {
XrStructureType type;
void* next;
XrPerformanceMetricsCounterFlagsANDROID counterFlags;
XrPerformanceMetricsCounterUnitANDROID counterUnit;
uint32_t uintValue;
float floatValue;
} XrPerformanceMetricsCounterANDROID;
Üye Açıklamaları
type
, bu yapının XrStructureType değeridir.next
,NULL
veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.counterFlags
, değer üyelerinin geçerliliğini açıklayan XrPerformanceMetricsCounterFlagsANDROID bit maskesi.counterUnit
, ölçüm birimini açıklayan XrPerformanceMetricsCounterUnitANDROID enum'udur.uintValue
,uint32_t
biçimindeki sayaç değeridir.counterFlags
,XR_PERFORMANCE_METRICS_COUNTER_UINT_VALUE_VALID_BIT_ANDROID
içeriyorsa geçerlidir.floatValue
,float
biçimindeki sayaç değeridir.counterFlags
,XR_PERFORMANCE_METRICS_COUNTER_FLOAT_VALUE_VALID_BIT_ANDROID
içeriyorsa geçerlidir.
XrPerformanceMetricsCounterANDROID, gerçek zamanlı performans metriği sayacı bilgilerini sorgulamak için xrQueryPerformanceMetricsCounterANDROID çağrılarak doldurulur.
Geçerli Kullanım (Dolayı)
- XrPerformanceMetricsCounterANDROID'ı kullanmadan önce
XR_ANDROID_performance_metrics
uzantısı etkinleştirilmelidir. type
XR_TYPE_PERFORMANCE_METRICS_COUNTER_ANDROID
olmalıdırnext
NULL
veya yapı zincirindeki bir sonraki yapıya işaret eden geçerli bir işaretçi olmalıdır.counterFlags
0 veya XrPerformanceMetricsCounterFlagsANDROID değerlerinin geçerli bir kombinasyonu olmalıdırcounterUnit
geçerli bir XrPerformanceMetricsCounterUnitANDROID değeri olmalıdır.
Yeni İşlevler
xrEnumeratePerformanceMetricsCounterPathsANDROID işlevi, çalışma zamanı tarafından desteklenen tüm performans metriği sayıcı yollarını listeler ve şu şekilde tanımlanır:
XrResult xrEnumeratePerformanceMetricsCounterPathsANDROID(
XrInstance instance,
uint32_t counterPathCapacityInput,
uint32_t* counterPathCountOutput,
XrPath* counterPaths);
Parametre Açıklamaları
instance
, daha önce xrCreateInstance ile oluşturulmuş bir XrInstance işleyicisidir.counterPathCapacityInput
,counterPaths
dizisinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0 değerini alır.counterPathCountOutput
, çalışma zamanında yazılancounterPaths
sayısıyla veyacounterPathCapacityInput
yetersiz olduğunda gereken kapasiteyle doldurulur.counterPaths
, çalışma zamanında doldurulan ve mevcut tüm performans metriği sayıcılarını içeren birXrPath
dizisidir ancakcounterPathCapacityInput
0 iseNULL
olabilir.- Gerekli
counterPaths
boyutunu almayla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Geçerli Kullanım (Dolayı)
- xrEnumeratePerformanceMetricsCounterPathsANDROID çağrılmadan önce
XR_ANDROID_performance_metrics
uzantısı etkinleştirilmelidir. instance
geçerli bir XrInstance herkese açık kullanıcı adı olmalıdır.counterPathCountOutput
,uint32_t
değerine işaret eden bir işaretçi olmalıdır.counterPathCapacityInput
0 değilsecounterPaths
,counterPathCapacityInput
XrPath
değer dizisine işaretçi olmalıdır.
İade Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SIZE_INSUFFICIENT
xrSetPerformanceMetricsStateANDROID işlevi şu şekilde tanımlanır:
XrResult xrSetPerformanceMetricsStateANDROID(
XrSession session,
const XrPerformanceMetricsStateANDROID* state);
Parametre Açıklamaları
session
, daha önce xrCreateSession ile oluşturulmuş bir XrSession işleyicisidir.state
, XrPerformanceMetricsStateANDROID yapısının işaretçisidir.
xrSetPerformanceMetricsStateANDROID işlevi, performans metrikleri sistemini etkinleştirir veya devre dışı bırakır.
Geçerli Kullanım (Dolayı)
- xrSetPerformanceMetricsStateANDROID çağrılmadan önce
XR_ANDROID_performance_metrics
uzantısı etkinleştirilmelidir. session
geçerli bir XrSession herkese açık kullanıcı adı olmalıdır.state
, geçerli bir XrPerformanceMetricsStateANDROID yapısına işaretçi olmalıdır.
İade Kodları
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
xrGetPerformanceMetricsStateANDROID işlevi şu şekilde tanımlanır:
XrResult xrGetPerformanceMetricsStateANDROID(
XrSession session,
XrPerformanceMetricsStateANDROID* state);
Parametre Açıklamaları
session
, daha önce xrCreateSession ile oluşturulmuş bir XrSession işleyicisidir.state
, XrPerformanceMetricsStateANDROID yapısına işaret eden bir işaretçidir.
xrGetPerformanceMetricsStateANDROID işlevi, performans metrikleri sisteminin mevcut durumunu alır.
Geçerli Kullanım (Dolayı)
- xrGetPerformanceMetricsStateANDROID çağrılmadan önce
XR_ANDROID_performance_metrics
uzantısı etkinleştirilmelidir. session
geçerli bir XrSession herkese açık kullanıcı adı olmalıdır.state
, XrPerformanceMetricsStateANDROID yapısına işaret eden bir işaretçi olmalıdır.
İade Kodları
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
xrQueryPerformanceMetricsCounterANDROID işlevi şu şekilde tanımlanır:
XrResult xrQueryPerformanceMetricsCounterANDROID(
XrSession session,
XrPath counterPath,
XrPerformanceMetricsCounterANDROID* counter);
Parametre Açıklamaları
session
, daha önce xrCreateSession ile oluşturulmuş bir XrSession işleyicisidir.counterPath
, geçerli bir performans metriği sayıcı yoludur.counter
, XrPerformanceMetricsCounterANDROID yapısına işaret eden bir işaretçidir.
xrQueryPerformanceMetricsCounterANDROID işlevi, performans metrikleri sayacını sorgular.
Uygulama, xrQueryPerformanceMetricsCounterANDROID kullanarak metrikleri sorgulamadan önce xrSetPerformanceMetricsStateANDROID çağrısını yaparak performans metrikleri sistemini etkinleştirmelidir.
Geçerli Kullanım (Dolayı)
- xrQueryPerformanceMetricsCounterANDROID çağrılmadan önce
XR_ANDROID_performance_metrics
uzantısı etkinleştirilmelidir. session
geçerli bir XrSession herkese açık kullanıcı adı olmalıdır.counter
, XrPerformanceMetricsCounterANDROID yapısına işaret eden bir işaretçi olmalıdır.
İade Kodları
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_PATH_UNSUPPORTED
XR_ERROR_PATH_INVALID