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_ANDROIDXR_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पर सेट किया जाता है, ताकि यह पता चल सके कि परफ़ॉर्मेंस मेट्रिक सिस्टम चालू है. अगर स्टेटस पाने के दौरानenabledकोXR_FALSEपर सेट किया जाता है, तो इसका मतलब है कि परफ़ॉर्मेंस मेट्रिक सिस्टम चालू नहीं है. स्टेटस सेट करते समय, परफ़ॉर्मेंस मेट्रिक सिस्टम को चालू करने के लिएXR_TRUEऔर इसे बंद करने के लिएXR_FALSEपर सेट करें.
परफ़ॉर्मेंस मेट्रिक सिस्टम को चालू या बंद करने के लिए, xrSetPerformanceMetricsStateANDROID को कॉल करते समय, XrPerformanceMetricsStateANDROID को इनपुट के तौर पर दिया जाता है. XrPerformanceMetricsStateANDROID को आउटपुट पैरामीटर के तौर पर पॉप्युलेट किया जाता है. ऐसा तब किया जाता है, जब xrGetPerformanceMetricsStateANDROID को कॉल करके यह पता लगाया जाता है कि परफ़ॉर्मेंस मेट्रिक सिस्टम चालू है या नहीं.
मान्य इस्तेमाल (इंप्लिसिट)
- XrPerformanceMetricsStateANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_performance_metricsएक्सटेंशन चाहिए कि चालू हो typeकोXR_TYPE_PERFORMANCE_METRICS_STATE_ANDROIDहोना ज़रूरी हैnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
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होना ज़रूरी हैnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिएcounterFlags0 होनी चाहिए या XrPerformanceMetricsCounterFlagsANDROID की वैल्यू का मान्य कॉम्बिनेशन होना चाहिएcounterUnitXrPerformanceMetricsCounterUnitANDROID की वैल्यू मान्य होनी चाहिए
नए फ़ंक्शन
xrEnumeratePerformanceMetricsCounterPathsANDROID फ़ंक्शन, रनटाइम के साथ काम करने वाली सभी परफ़ॉर्मेंस मेट्रिक के काउंटर पाथ की जानकारी देता है. इसे इस तरह से परिभाषित किया गया है:
XrResult xrEnumeratePerformanceMetricsCounterPathsANDROID(
XrInstance instance,
uint32_t counterPathCapacityInput,
uint32_t* counterPathCountOutput,
XrPath* counterPaths);
पैरामीटर की जानकारी
instance, XrInstance हैंडल है, जिसे पहले xrCreateInstance की मदद से बनाया गया था.counterPathCapacityInput,counterPathsकलेक्शन की क्षमता है या ज़रूरी क्षमता वापस पाने के अनुरोध के लिए 0.counterPathCountOutputको रनटाइम के दौरान, लिखी गईcounterPathsकी संख्या या ज़रूरी क्षमता के हिसाब से भरा जाता है. ऐसा तब किया जाता है, जबcounterPathCapacityInputकी संख्या कम हो.counterPaths,XrPathका एक कलेक्शन है, जिसे रनटाइम से भरा जाता है. इसमें परफ़ॉर्मेंस मेट्रिक के सभी उपलब्ध काउंटर होते हैं. हालांकि, अगरcounterPathCapacityInput0 है, तोNULLहो सकता है.- ज़रूरी
counterPathsसाइज़ को वापस पाने के बारे में पूरी जानकारी के लिए, बफ़र साइज़ पैरामीटर सेक्शन देखें.
मान्य इस्तेमाल (इंप्लिसिट)
- xrEnumeratePerformanceMetricsCounterPathsANDROID को कॉल करने से पहले,
XR_ANDROID_performance_metricsएक्सटेंशन चालू होना चाहिए instanceयह एक मान्य XrInstance हैंडल होना चाहिएcounterPathCountOutput,uint32_tवैल्यू का पॉइंटर होना चाहिए- अगर
counterPathCapacityInput0 नहीं है, तोcounterPathscounterPathCapacityInputXrPathवैल्यू की किसी ऐरे का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SIZE_INSUFFICIENT
xrSetPerformanceMetricsStateANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrSetPerformanceMetricsStateANDROID(
XrSession session,
const XrPerformanceMetricsStateANDROID* state);
पैरामीटर की जानकारी
session, XrSession हैंडल है, जिसे पहले xrCreateSession की मदद से बनाया गया था.state, XrPerformanceMetricsStateANDROID स्ट्रक्चर का पॉइंटर है.
xrSetPerformanceMetricsStateANDROID फ़ंक्शन, परफ़ॉर्मेंस मेट्रिक सिस्टम को चालू या बंद करता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrSetPerformanceMetricsStateANDROID को कॉल करने से पहले,
XR_ANDROID_performance_metricsएक्सटेंशन चालू होना चाहिए sessionयह एक मान्य XrSession हैंडल होना चाहिएstateXrPerformanceMetricsStateANDROID स्ट्रक्चर के लिए मान्य पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOST
xrGetPerformanceMetricsStateANDROID फ़ंक्शन को इस तरह से परिभाषित किया गया है:
XrResult xrGetPerformanceMetricsStateANDROID(
XrSession session,
XrPerformanceMetricsStateANDROID* state);
पैरामीटर की जानकारी
session, XrSession हैंडल है, जिसे पहले xrCreateSession की मदद से बनाया गया था.state, XrPerformanceMetricsStateANDROID स्ट्रक्चर का पॉइंटर है.
xrGetPerformanceMetricsStateANDROID फ़ंक्शन से, परफ़ॉर्मेंस मेट्रिक सिस्टम की मौजूदा स्थिति का पता चलता है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrGetPerformanceMetricsStateANDROID को कॉल करने से पहले,
XR_ANDROID_performance_metricsएक्सटेंशन चालू होना चाहिए sessionयह एक मान्य XrSession हैंडल होना चाहिएstateXrPerformanceMetricsStateANDROID स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_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 हैंडल होना चाहिएcounterXrPerformanceMetricsCounterANDROID स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
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™ और OpenXR लोगो, The Khronos Group Inc. के मालिकाना हक वाले ट्रेडमार्क हैं. ये चीन, यूरोपीय संघ, जापान, और यूनाइटेड किंगडम में ट्रेडमार्क के तौर पर रजिस्टर किए गए हैं.