XR_ANDROID_enumerate_system_extension_properties
Cadena de nombre
XR_ANDROID_enumerate_system_extension_properties
Tipo de extensión
Extensión de la instancia
Número de extensión registrado
725
Revisión
1
Estado de ratificación
No se ratificó
Dependencias de extensiones y versiones
Fecha de la última modificación
2026-02-11
Estado de la IP
No hay reclamos conocidos por IP.
Colaboradores
Spencer Quin, Google
Nihav Jain, Google
Kenny Vercaemer, Google
Descripción general
Esta extensión permite que las aplicaciones determinen qué extensiones son compatibles con la configuración actual del sistema. Incluso si el entorno de ejecución admite una extensión, es posible que el hardware del sistema actual no la admita.
La estructura XrSystemExtensionPropertiesANDROID se define de la siguiente manera:
typedef struct XrSystemExtensionPropertiesANDROID {
XrStructureType type;
void* next;
XrExtensionProperties properties;
XrBool32 isSupported;
} XrSystemExtensionPropertiesANDROID;
Descripciones de los miembros
typees el XrStructureType de esta estructura.nextesNULLo un puntero a la siguiente estructura en una cadena de estructuras.propertieses el XrExtensionProperties con el nombre de la extensión.isSupportedes un valor booleano que indica si el sistema admite la extensión actualmente.
Uso válido (implícito)
- La extensión
XR_ANDROID_enumerate_system_extension_propertiesdebe habilitarse antes de usar XrSystemExtensionPropertiesANDROID -
typedebe serXR_TYPE_SYSTEM_EXTENSION_PROPERTIES_ANDROID -
nextdebe serNULLo un puntero válido a la siguiente estructura en una cadena de estructuras
La estructura XrEventDataSystemPropertiesChangedANDROID se define de la siguiente manera:
typedef struct XrEventDataSystemPropertiesChangedANDROID {
XrStructureType type;
const void* next;
} XrEventDataSystemPropertiesChangedANDROID;
Descripciones de los miembros
typees el XrStructureType de esta estructura.nextesNULLo un puntero a la siguiente estructura en una cadena de estructuras.
El tiempo de ejecución debe poner en cola este evento cuando cambien las propiedades de la extensión del sistema. Por ejemplo, cuando se conectan periféricos nuevos que habilitan nuevas funciones.
Todas las llamadas a xrEnumerateSystemExtensionPropertiesANDROID deben devolver los mismos valores hasta que se ponga en cola un nuevo evento XrEventDataSystemPropertiesChangedANDROID.
Cuando una aplicación recibe este evento, debe volver a llamar a xrEnumerateSystemExtensionPropertiesANDROID para determinar las propiedades de extensión del sistema más recientes y, posiblemente, crear o destruir los dispositivos de seguimiento asociados con esas extensiones según sea necesario.
Uso válido (implícito)
- La extensión
XR_ANDROID_enumerate_system_extension_propertiesdebe habilitarse antes de usar XrEventDataSystemPropertiesChangedANDROID -
typedebe serXR_TYPE_EVENT_DATA_SYSTEM_PROPERTIES_CHANGED_ANDROID -
nextdebe serNULLo un puntero válido a la siguiente estructura en una cadena de estructuras
La función xrEnumerateSystemExtensionPropertiesANDROID se define de la siguiente manera:
XrResult xrEnumerateSystemExtensionPropertiesANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t propertyCapacityInput,
uint32_t* propertyCountOutput,
XrSystemExtensionPropertiesANDROID* properties);
Descripciones de los parámetros
instancees un XrInstance válido .systemIdes un sliink:XrSystemId válido del sistema para el que se recuperarán las propiedades de extensión.propertyCapacityInputes la capacidad del arraypropertieso 0 para indicar una solicitud para recuperar la capacidad requerida.propertyCountOutputes la cantidad de propiedades de extensión solicitadas.propertieses un array de estructuras XrSystemExtensionPropertiesANDROID. Puede serNULLsipropertyCapacityInputes 0.- Consulta la sección Parámetros de tamaño del búfer para obtener una descripción detallada de cómo recuperar el tamaño de
propertiesrequerido.
Uso válido (implícito)
- La extensión
XR_ANDROID_enumerate_system_extension_propertiesdebe habilitarse antes de llamar a xrEnumerateSystemExtensionPropertiesANDROID. -
instancedebe ser un identificador de XrInstance válido -
propertyCountOutputdebe ser un puntero a un valoruint32_t. - Si
propertyCapacityInputno es0,propertiesdebe ser un puntero a un array de estructuraspropertyCapacityInputXrSystemExtensionPropertiesANDROID.
Códigos de retorno
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
Ejemplo
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()
);
Problemas
Historial de versiones
Revisión 1, 2026-03-17 (Kenny Vercaemer)
- Es la versión inicial de la extensión.