Name String
XR_ANDROID_performance_metrics
एक्सटेंशन टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
466
पिछली बार बदलाव करने की तारीख
2024-09-06
आईपी स्टेटस
आईपी पर कोई दावा नहीं किया गया है.
एक्सटेंशन और वर्शन की डिपेंडेंसी
योगदान देने वाले
दिमित्री कोटोव, Google
लेवाना चेन, Google
जेरेड फ़ाइंडर, Google
स्पेंसर क्विन, Google
खास जानकारी
यह एक्सटेंशन, मौजूदा एक्सआर डिवाइस, कंपोजिटर, और एक्सआर ऐप्लिकेशन की परफ़ॉर्मेंस मेट्रिक के अलग-अलग काउंटर की गिनती करने और उनसे जुड़ी क्वेरी करने के लिए एपीआई उपलब्ध कराता है. डेवलपर, इकट्ठा की जा रही परफ़ॉर्मेंस मेट्रिक के काउंटर का इस्तेमाल करके, परफ़ॉर्मेंस का विश्लेषण कर सकते हैं और XR ऐप्लिकेशन को टारगेट करके ऑप्टिमाइज़ कर सकते हैं. ऐप्लिकेशन को काउंटर रीड के आधार पर, अपने व्यवहार में बदलाव नहीं करना चाहिए.
परफ़ॉर्मेंस मेट्रिक के काउंटर, पहले से तय की गई XrPath
वैल्यू में व्यवस्थित किए जाते हैं. ये वैल्यू, रूट पाथ /perfmetrics_android में होती हैं. कोई ऐप्लिकेशन, xrEnumeratePerformanceMetricsCounterPathsANDROID के ज़रिए उपलब्ध काउंटर के बारे में जानकारी पा सकता है. यहां परफ़ॉर्मेंस मेट्रिक के उन काउंटर पाथ की सूची दी गई है जो Android डिवाइसों पर हो सकते हैं:
- /perfmetrics_android/app/cpu_frametime (मिलीसेकंड, फ़्लोट) - क्लाइंट को एक फ़्रेम को प्रोसेस करने में लगा कुल समय.
- /perfmetrics_android/app/gpu_frametime
(मिलीसेकंड, फ़्लोट) - हर फ़्रेम के लिए, GPU के काम पूरा होने का इंतज़ार करने में क्लाइंट का कुल समय. ध्यान दें:
- इंतज़ार करने में ज़्यादा समय लगने का मतलब यह हो सकता है कि जीपीयू किसी दूसरे काम में व्यस्त था. ऐसा ज़रूरी नहीं है कि यह क्लाइंट, जीपीयू का ज़्यादा इस्तेमाल कर रहा हो.
- अगर कंपोजिटर की जांच करने पर रेंडरिंग पहले ही पूरी हो चुकी थी, तो GPU से फ़्रेम रेंडर होने में लगने वाला समय शून्य हो सकता है.
- /perfmetrics_android/app/cpu_utilization
(प्रतिशत, फ़्लोट) - समय के साथ ऐप्लिकेशन के सीपीयू के इस्तेमाल की कुल दर का औसत.
- मल्टी-कोर प्रोसेसर पर, यह 100% से ज़्यादा हो सकता है.
- /perfmetrics_android/app/gpu_utilization (प्रतिशत) - समय के साथ ऐप्लिकेशन के जीपीयू के इस्तेमाल की कुल दर का औसत.
- /perfmetrics_android/app/motion_to_photon_latency (मिलीसेकंड, फ़्लोट) - उपयोगकर्ता की कार्रवाई से शुरू होने वाले मोशन इवेंट से लेकर, डिसप्ले पर उससे जुड़ी फ़िज़िकल इमेज के अपडेट होने में लगने वाला समय.
- /perfmetrics_android/compositor/cpu_frametime (मिलीसेकंड, फ़्लोट) - फ़्रेम को प्रोसेस करने में कॉम्पोज़र को लगा कुल समय.
- /perfmetrics_android/compositor/gpu_frametime (मिलीसेकंड, फ़्लोट) - हर फ़्रेम के लिए, GPU के काम पूरा होने का इंतज़ार करने में कॉम्पोज़र को जो समय लगा उसे वॉलक्लॉक टाइम कहा जाता है.
- /perfmetrics_android/compositor/dropped_frame_count (पूर्णांक) - सभी ऐप्लिकेशन से छूटे हुए फ़्रेम की कुल संख्या.
- /perfmetrics_android/compositor/frames_per_second (फ़्लोट) - डिवाइस पर हर सेकंड में दिखाए गए कंपोजिटर फ़्रेम की संख्या.
- /perfmetrics_android/device/cpu_utilization_average (प्रतिशत, फ़्लोट) - डिवाइस के सीपीयू के इस्तेमाल की दर का औसत, जो सभी कोर के लिए और समय के साथ लिया जाता है.
- /perfmetrics_android/device/cpu_utilization_worst (प्रतिशत, फ़्लोट) - समय के साथ, सबसे खराब परफ़ॉर्म करने वाले कोर के डिवाइस सीपीयू के इस्तेमाल की दर का औसत.
- /perfmetrics_android/device/cpu0_utilization से लेकर /perfmetrics_android/device/cpuX_utilization तक (प्रतिशत, फ़्लोट, X सीपीयू कोर की संख्या में से एक कम है) - समय के साथ हर सीपीयू कोर के लिए, डिवाइस के सीपीयू के इस्तेमाल की दर का औसत.
- /perfmetrics_android/device/cpu_frequency (मेगाहर्ट्ज़, फ़्लोट) - डिवाइस के सीपीयू की फ़्रीक्वेंसी का औसत, जो सभी कोर के लिए और समय के हिसाब से लिया जाता है.
- /perfmetrics_android/device/gpu_utilization (प्रतिशत, फ़्लोट) - समय के साथ डिवाइस के जीपीयू के इस्तेमाल की दर का औसत.
सेशन बनने के बाद, कोई ऐप्लिकेशन उस सेशन के लिए परफ़ॉर्मेंस मेट्रिक सिस्टम को चालू करने के लिए, xrSetPerformanceMetricsStateANDROID का इस्तेमाल कर सकता है. कोई ऐप्लिकेशन, परफ़ॉर्मेंस मेट्रिक सिस्टम के चालू होने पर, किसी सेशन में परफ़ॉर्मेंस मेट्रिक काउंटर की क्वेरी करने के लिए, xrQueryPerformanceMetricsCounterANDROID का इस्तेमाल कर सकता है. इसके अलावा, परफ़ॉर्मेंस मेट्रिक सिस्टम के चालू होने की क्वेरी करने के लिए, xrGetPerformanceMetricsStateANDROID का इस्तेमाल किया जा सकता है.
इस एक्सटेंशन की सुविधा चालू करने के लिए, ऐप्लिकेशन को एक्सटेंशन सेक्शन में बताए गए XrInstanceCreateInfo::enabledExtensionNames पैरामीटर का इस्तेमाल करके, xrCreateInstance में एक्सटेंशन का नाम देना चाहिए.
नए टाइप के फ़्लैग
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;
नए Enum काॅन्सटेंट
XrStructureType एनोटेशन को इनके साथ जोड़ा गया है:
XR_TYPE_PERFORMANCE_METRICS_STATE_ANDROID
XR_TYPE_PERFORMANCE_METRICS_COUNTER_ANDROID
नए Enums
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;
नए स्ट्रक्चर
XrPerformanceMetricsStateANDROID स्ट्रक्चर को इस तरह परिभाषित किया गया है:
typedef struct XrPerformanceMetricsStateANDROID {
XrStructureType type;
void* next;
XrBool32 enabled;
} XrPerformanceMetricsStateANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type
इस स्ट्रक्चर का XrStructureType है.next
,NULL
है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.enabled
कोXR_TRUE
पर सेट किया जाता है, ताकि यह पता चल सके कि परफ़ॉर्मेंस मेट्रिक सिस्टम चालू है. अगर ऐसा नहीं है, तो स्टेटस पाने के लिएXR_FALSE
पर सेट किया जाता है. स्टेटस सेट करते समय, परफ़ॉर्मेंस मेट्रिक सिस्टम को चालू करने के लिएXR_TRUE
और इसे बंद करने के लिएXR_FALSE
पर सेट करें.
परफ़ॉर्मेंस मेट्रिक सिस्टम को चालू या बंद करने के लिए, xrSetPerformanceMetricsStateANDROID को कॉल करते समय, XrPerformanceMetricsStateANDROID को इनपुट के तौर पर दिया जाता है. XrPerformanceMetricsStateANDROID को आउटपुट पैरामीटर के तौर पर पॉप्युलेट किया जाता है. ऐसा तब किया जाता है, जब xrGetPerformanceMetricsStateANDROID को कॉल करके यह क्वेरी की जाती है कि परफ़ॉर्मेंस मेट्रिक सिस्टम चालू है या नहीं.
मान्य इस्तेमाल (इंप्लिसिट)
- XrPerformanceMetricsStateANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_performance_metrics
एक्सटेंशन चालू होना चाहिए type
होनी चाहिएXR_TYPE_PERFORMANCE_METRICS_STATE_ANDROID
next
NULL
या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
XrPerformanceMetricsCounterANDROID स्ट्रक्चर को इस तरह परिभाषित किया गया है:
typedef struct XrPerformanceMetricsCounterANDROID {
XrStructureType type;
void* next;
XrPerformanceMetricsCounterFlagsANDROID counterFlags;
XrPerformanceMetricsCounterUnitANDROID counterUnit;
uint32_t uintValue;
float floatValue;
} XrPerformanceMetricsCounterANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type
इस स्ट्रक्चर का XrStructureType है.next
,NULL
है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.counterFlags
, XrPerformanceMetricsCounterFlagsANDROID का बिटमास्क है. इससे वैल्यू के सदस्यों की पुष्टि की जाती है.counterUnit
, XrPerformanceMetricsCounterUnitANDROID का एक क्रम है, जिसमें मेज़रमेंट की यूनिट के बारे में बताया गया है.uintValue
,uint32_t
फ़ॉर्मैट में काउंटर वैल्यू है. यह तब मान्य होता है, जबcounterFlags
मेंXR_PERFORMANCE_METRICS_COUNTER_UINT_VALUE_VALID_BIT_ANDROID
शामिल हो.floatValue
,float
फ़ॉर्मैट में काउंटर वैल्यू है. यह तब मान्य होता है, जबcounterFlags
मेंXR_PERFORMANCE_METRICS_COUNTER_FLOAT_VALUE_VALID_BIT_ANDROID
शामिल हो.
XrPerformanceMetricsCounterANDROID को रीयल-टाइम परफ़ॉर्मेंस मेट्रिक काउंटर की जानकारी क्वेरी करने के लिए, xrQueryPerformanceMetricsCounterANDROID को कॉल करके पॉप्युलेट किया जाता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrPerformanceMetricsCounterANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_performance_metrics
एक्सटेंशन चालू होना ज़रूरी है type
होनी चाहिएXR_TYPE_PERFORMANCE_METRICS_COUNTER_ANDROID
next
NULL
या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिएcounterFlags
0 होनी चाहिए या XrPerformanceMetricsCounterFlagsANDROID की वैल्यू का मान्य कॉम्बिनेशन होना चाहिएcounterUnit
XrPerformanceMetricsCounterUnitANDROID की वैल्यू मान्य होनी चाहिए
नए फ़ंक्शन
xrEnumeratePerformanceMetricsCounterPathsANDROID फ़ंक्शन, रनटाइम के साथ काम करने वाली सभी परफ़ॉर्मेंस मेट्रिक के काउंटर पाथ की जानकारी देता है. इसे इस तरह से परिभाषित किया गया है:
XrResult xrEnumeratePerformanceMetricsCounterPathsANDROID(
XrInstance instance,
uint32_t counterPathCapacityInput,
uint32_t* counterPathCountOutput,
XrPath* counterPaths);
पैरामीटर की जानकारी
instance
, XrInstance हैंडल है, जिसे पहले xrCreateInstance की मदद से बनाया गया था.counterPathCapacityInput
,counterPaths
कलेक्शन की क्षमता है या ज़रूरी क्षमता वापस पाने के अनुरोध के लिए 0.counterPathCountOutput
को रनटाइम के दौरान, लिखी गईcounterPaths
की संख्या या ज़रूरी क्षमता के हिसाब से भरा जाता है. ऐसा तब किया जाता है, जबcounterPathCapacityInput
की संख्या काफ़ी न हो.counterPaths
,XrPath
का एक कलेक्शन है, जिसे रनटाइम से भरा जाता है. इसमें परफ़ॉर्मेंस मेट्रिक के सभी उपलब्ध काउंटर होते हैं. हालांकि, अगरcounterPathCapacityInput
0 है, तोNULL
हो सकता है.- ज़रूरी
counterPaths
साइज़ को वापस पाने के बारे में पूरी जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
मान्य इस्तेमाल (इंप्लिसिट)
- xrEnumeratePerformanceMetricsCounterPathsANDROID को कॉल करने से पहले,
XR_ANDROID_performance_metrics
एक्सटेंशन चालू होना चाहिए instance
यह एक मान्य XrInstance हैंडल होना चाहिएcounterPathCountOutput
,uint32_t
वैल्यू का पॉइंटर होना चाहिए- अगर
counterPathCapacityInput
0 नहीं है, तोcounterPaths
counterPathCapacityInput
XrPath
वैल्यू की किसी ऐरे का पॉइंटर होना चाहिए
रिटर्न कोड
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 फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrSetPerformanceMetricsStateANDROID(
XrSession session,
const XrPerformanceMetricsStateANDROID* state);
पैरामीटर की जानकारी
session
, XrSession हैंडल है, जिसे पहले xrCreateSession की मदद से बनाया गया था.state
, XrPerformanceMetricsStateANDROID स्ट्रक्चर का पॉइंटर है.
xrSetPerformanceMetricsStateANDROID फ़ंक्शन, परफ़ॉर्मेंस मेट्रिक सिस्टम को चालू या बंद करता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrSetPerformanceMetricsStateANDROID को कॉल करने से पहले,
XR_ANDROID_performance_metrics
एक्सटेंशन चालू होना चाहिए session
यह एक मान्य XrSession हैंडल होना चाहिएstate
XrPerformanceMetricsStateANDROID स्ट्रक्चर के लिए मान्य पॉइंटर होना चाहिए
रिटर्न कोड
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 फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrGetPerformanceMetricsStateANDROID(
XrSession session,
XrPerformanceMetricsStateANDROID* state);
पैरामीटर की जानकारी
session
, XrSession हैंडल है, जिसे पहले xrCreateSession की मदद से बनाया गया था.state
, XrPerformanceMetricsStateANDROID स्ट्रक्चर का पॉइंटर है.
xrGetPerformanceMetricsStateANDROID फ़ंक्शन से, परफ़ॉर्मेंस मेट्रिक सिस्टम की मौजूदा स्थिति का पता चलता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrGetPerformanceMetricsStateANDROID को कॉल करने से पहले,
XR_ANDROID_performance_metrics
एक्सटेंशन को चालू करना ज़रूरी है session
यह एक मान्य XrSession हैंडल होना चाहिएstate
XrPerformanceMetricsStateANDROID स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
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 फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrQueryPerformanceMetricsCounterANDROID(
XrSession session,
XrPath counterPath,
XrPerformanceMetricsCounterANDROID* counter);
पैरामीटर की जानकारी
session
, XrSession हैंडल है, जिसे पहले xrCreateSession की मदद से बनाया गया था.counterPath
, परफ़ॉर्मेंस मेट्रिक का मान्य काउंटर पाथ है.counter
, XrPerformanceMetricsCounterANDROID स्ट्रक्चर का पॉइंटर है.
xrQueryPerformanceMetricsCounterANDROID फ़ंक्शन, परफ़ॉर्मेंस मेट्रिक काउंटर से क्वेरी करता है.
ऐप्लिकेशन को चाहिए कि वह xrQueryPerformanceMetricsCounterANDROID का इस्तेमाल करके मेट्रिक क्वेरी करने से पहले, xrSetPerformanceMetricsStateANDROID को कॉल करके परफ़ॉर्मेंस मेट्रिक सिस्टम चालू करे.
मान्य इस्तेमाल (इंप्लिसिट)
- xrQueryPerformanceMetricsCounterANDROID को कॉल करने से पहले,
XR_ANDROID_performance_metrics
एक्सटेंशन चालू होना चाहिए session
यह एक मान्य XrSession हैंडल होना चाहिएcounter
XrPerformanceMetricsCounterANDROID स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
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