XR_ANDROID_enumerate_system_extension_properties

नाम स्ट्रिंग

XR_ANDROID_enumerate_system_extension_properties

एक्सटेंशन का टाइप

इंस्टेंस एक्सटेंशन

रजिस्टर किए गए एक्सटेंशन का नंबर

725

संशोधन

1

पुष्टि की स्थिति

पुष्टि नहीं की गई

एक्सटेंशन और वर्शन की ज़रूरी शर्तें

OpenXR 1.0

पिछली बार बदलाव किए जाने की तारीख

2026-02-11

आईपी की स्थिति

आईपी से जुड़े किसी दावे की जानकारी नहीं है.

योगदान देने वाले

स्पेंसर क्विन, Google
निहाव जैन, Google
कैनी वर्केमर, Google

खास जानकारी

इस एक्सटेंशन की मदद से, ऐप्लिकेशन यह पता लगा सकते हैं कि मौजूदा सिस्टम कॉन्फ़िगरेशन के साथ कौनसे एक्सटेंशन काम करते हैं. ऐसा हो सकता है कि कोई एक्सटेंशन रनटाइम के साथ काम करता हो, लेकिन वह मौजूदा सिस्टम हार्डवेयर के साथ काम करे.

XrSystemExtensionPropertiesANDROID स्ट्रक्चर को इस तरह से तय किया गया है:

typedef struct XrSystemExtensionPropertiesANDROID {
    XrStructureType          type;
    void*                    next;
    XrExtensionProperties    properties;
    XrBool32                 isSupported;
} XrSystemExtensionPropertiesANDROID;

सदस्यों की जानकारी

  • type इस स्ट्रक्चर का XrStructureType है.
  • next NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.
  • properties एक्सटेंशन के नाम वाला XrExtensionProperties है.
  • isSupported एक बूलियन वैल्यू है, जो यह बताती है कि फ़िलहाल, सिस्टम इस एक्सटेंशन के साथ काम करता है या नहीं.

मान्य इस्तेमाल (सीधे तौर पर न दिखाना)

  • XrSystemExtensionPropertiesANDROID का इस्तेमाल करने से पहले, XR_ANDROID_enumerate_system_extension_properties एक्सटेंशन चालू होना चाहिए
  • type की वैल्यू XR_TYPE_SYSTEM_EXTENSION_PROPERTIES_ANDROID
  • next की वैल्यू NULL या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए

XrEventDataSystemPropertiesChangedANDROID स्ट्रक्चर को इस तरह से तय किया गया है:

typedef struct XrEventDataSystemPropertiesChangedANDROID {
    XrStructureType    type;
    const void*        next;
} XrEventDataSystemPropertiesChangedANDROID;

सदस्यों की जानकारी

  • type इस स्ट्रक्चर का XrStructureType है.
  • next NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.

सिस्टम एक्सटेंशन की प्रॉपर्टी में बदलाव होने पर, रनटाइम को इस इवेंट को क्यू में शामिल करना होगा. उदाहरण के लिए, नए पेरिफ़ेरल कनेक्ट होने पर, नई सुविधाएं चालू हो जाती हैं.

जब तक नया XrEventDataSystemPropertiesChangedANDROID इवेंट क्यू में शामिल नहीं किया जाता, तब तक xrEnumerateSystemExtensionPropertiesANDROID के सभी कॉल, एक ही वैल्यू दिखाएंगे.

जब किसी ऐप्लिकेशन को यह इवेंट मिलता है, तो उसे सिस्टम एक्सटेंशन की नई प्रॉपर्टी का पता लगाने के लिए, xrEnumerateSystemExtensionPropertiesANDROID को फिर से कॉल करना चाहिए. साथ ही, ज़रूरत के हिसाब से उन एक्सटेंशन से जुड़े ट्रैकर्स बनाने या मिटाने चाहिए.

मान्य इस्तेमाल (सीधे तौर पर न दिखाना)

  • XrEventDataSystemPropertiesChangedANDROID का इस्तेमाल करने से पहले, XR_ANDROID_enumerate_system_extension_properties एक्सटेंशन चालू होना चाहिए
  • type की वैल्यू XR_TYPE_EVENT_DATA_SYSTEM_PROPERTIES_CHANGED_ANDROID
  • next की वैल्यू NULL या स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए

xrEnumerateSystemExtensionPropertiesANDROID फ़ंक्शन को इस तरह से तय किया गया है:

XrResult xrEnumerateSystemExtensionPropertiesANDROID(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    uint32_t                                    propertyCapacityInput,
    uint32_t*                                   propertyCountOutput,
    XrSystemExtensionPropertiesANDROID*         properties);

पैरामीटर की जानकारी

  • instance एक मान्य XrInstance है .
  • systemId उस सिस्टम का मान्य sliink:XrSystemId है जिसके लिए एक्सटेंशन की प्रॉपर्टी वापस लानी हैं.
  • propertyCapacityInput , properties कलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता वापस लाने के अनुरोध के लिए, इसकी वैल्यू 0 हो सकती है.
  • propertyCountOutput , अनुरोध की गई एक्सटेंशन प्रॉपर्टी की संख्या है.
  • properties , XrSystemExtensionPropertiesANDROID स्ट्रक्चर का कलेक्शन है. अगर propertyCapacityInput की वैल्यू 0 है, तो इसकी वैल्यू NULL हो सकती है.
  • ज़रूरी properties साइज़ को वापस लाने के बारे में ज़्यादा जानकारी के लिए, बफ़र साइज़ के पैरामीटर सेक्शन देखें.

मान्य इस्तेमाल (सीधे तौर पर न दिखाना)

  • XR_ANDROID_enumerate_system_extension_properties एक्सटेंशन चालू होना चाहिए, इससे पहले कि xrEnumerateSystemExtensionPropertiesANDROID को कॉल किया जाए
  • instance की वैल्यू, मान्य XrInstance हैंडल होनी चाहिए
  • propertyCountOutput की वैल्यू, uint32_t वैल्यू का पॉइंटर होनी चाहिए
  • अगर propertyCapacityInput की वैल्यू 0 नहीं है, तो properties की वैल्यू, propertyCapacityInput XrSystemExtensionPropertiesANDROID स्ट्रक्चर के कलेक्शन का पॉइंटर होनी चाहिए

रिस्पॉन्स कोड

सफलता

  • XR_SUCCESS

Failure

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE

उदाहरण

XrInstance instance; // XrInstance previously created

XrSystemId systemId; // XrSystemId from a previously created instance

PFN_xrEnumerateSystemExtensionPropertiesANDROID xrEnumerateSystemExtensionPropertiesANDROID;

// Poll events for recommended resolution changes.
XrEventDataBuffer event = {XR_TYPE_EVENT_DATA_BUFFER};
XrResult result = xrPollEvent(instance, &event);

if (result == XR_SUCCESS) {
    switch (event.type) {
        case XR_TYPE_EVENT_DATA_SYSTEM_PROPERTIES_CHANGED_ANDROID:
            // It's possible that the system was lost and a new id will be returned
            XrSystemId newSystemId;
            XrSystemGetInfo getInfo = {XR_TYPE_SYSTEM_GET_INFO};
            getInfo.formFactor = XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY;
            if(XR_SUCCESS == xrGetSystem(instance, &getInfo, &newSystemId)) {
                if(systemId != newSystemId) {
                    //Do things like recreate the session
                    systemId = newSystemId;
                }
            }

            // Enumerate the extensions to see which ones are now supported based on hardware changes
            uint32_t extensionsCount;
            xrEnumerateSystemExtensionPropertiesANDROID(instance, systemId, 0, &extensionsCount, NULL);

            std::vector<XrSystemExtensionPropertiesANDROID> properties(extensionsCount,
                {.type = XR_TYPE_SYSTEM_EXTENSION_PROPERTIES_ANDROID});

            XrResult result = xrEnumerateSystemExtensionPropertiesANDROID(
                instance,
                systemId,
                extensionsCount,
                &extensionsCount,
                properties.data()
            );

            // Do something based on which extensions are now supported by the system
            break;
    }
}
PFN_xrEnumerateSystemExtensionPropertiesANDROID xrEnumerateSystemExtensionPropertiesANDROID;

XrInstance instance;
XrInstanceCreateInfo createInfo = {XR_TYPE_INSTANCE_CREATE_INFO};
// Initialize the createInfo with appropriate values for the application
CHK_XR(xrCreateInstance(&createInfo, &instance));

// Get the systemId for the system.
XrSystemId systemId;
XrSystemGetInfo getInfo = {XR_TYPE_SYSTEM_GET_INFO};
getInfo.formFactor = XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY;
CHK_XR(xrGetSystem(instance, &getInfo, &systemId));

// Enumerate the system extension properties.
uint32_t extensionsCount;
xrEnumerateSystemExtensionPropertiesANDROID(instance, systemId, 0, &extensionsCount, NULL);

std::vector<XrSystemExtensionPropertiesANDROID> properties(extensionsCount,
    {.type = XR_TYPE_SYSTEM_EXTENSION_PROPERTIES_ANDROID});

XrResult result = xrEnumerateSystemExtensionPropertiesANDROID(
    instance,
    systemId,
    extensionsCount,
    &extensionsCount,
    properties.data()
);

समस्याएं

वर्शन हिस्ट्री

  • संशोधन 1, 17 मार्च, 2026 (कैनी वर्केमर)

    • एक्सटेंशन का शुरुआती वर्शन.