XR_ANDROID_enumerate_system_extension_properties
String Nama
XR_ANDROID_enumerate_system_extension_properties
Jenis Ekstensi
Ekstensi instance
Nomor Ekstensi Terdaftar
725
Revisi
1
Status Ratifikasi
Tidak diratifikasi
Dependensi Ekstensi dan Versi
Tanggal Terakhir Diubah
2026-02-11
Status IP
Tidak ada klaim IP yang diketahui.
Kontributor
Spencer Quin, Google
Nihav Jain, Google
Kenny Vercaemer, Google
Ringkasan
Ekstensi ini memungkinkan aplikasi menentukan ekstensi mana yang didukung oleh konfigurasi sistem saat ini. Meskipun ekstensi didukung oleh runtime, ekstensi tersebut mungkin tidak didukung oleh hardware sistem saat ini.
Struktur XrSystemExtensionPropertiesANDROID ditentukan sebagai:
typedef struct XrSystemExtensionPropertiesANDROID {
XrStructureType type;
void* next;
XrExtensionProperties properties;
XrBool32 isSupported;
} XrSystemExtensionPropertiesANDROID;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur.propertiesadalah XrExtensionProperties dengan nama ekstensi.isSupportedadalah boolean yang menunjukkan apakah ekstensi saat ini didukung oleh sistem.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_enumerate_system_extension_propertiesharus diaktifkan sebelum menggunakan XrSystemExtensionPropertiesANDROID -
typeharusXR_TYPE_SYSTEM_EXTENSION_PROPERTIES_ANDROID -
nextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai struktur
Struktur XrEventDataSystemPropertiesChangedANDROID ditentukan sebagai:
typedef struct XrEventDataSystemPropertiesChangedANDROID {
XrStructureType type;
const void* next;
} XrEventDataSystemPropertiesChangedANDROID;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur.
Runtime harus mengantrekan peristiwa ini saat properti ekstensi sistem telah berubah. Misalnya, saat periferal baru terhubung, fungsi baru akan diaktifkan.
Semua panggilan ke xrEnumerateSystemExtensionPropertiesANDROID harus menampilkan nilai yang sama hingga peristiwa XrEventDataSystemPropertiesChangedANDROID baru dimasukkan dalam antrean.
Saat menerima peristiwa ini, aplikasi harus memanggil xrEnumerateSystemExtensionPropertiesANDROID lagi untuk menentukan properti ekstensi sistem terbaru, yang mungkin membuat atau menghancurkan pelacak yang terkait dengan ekstensi tersebut sesuai kebutuhan.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_enumerate_system_extension_propertiesharus diaktifkan sebelum menggunakan XrEventDataSystemPropertiesChangedANDROID -
typeharusXR_TYPE_EVENT_DATA_SYSTEM_PROPERTIES_CHANGED_ANDROID -
nextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai struktur
Fungsi xrEnumerateSystemExtensionPropertiesANDROID ditentukan sebagai:
XrResult xrEnumerateSystemExtensionPropertiesANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t propertyCapacityInput,
uint32_t* propertyCountOutput,
XrSystemExtensionPropertiesANDROID* properties);
Deskripsi Parameter
instanceadalah XrInstance yang valid .systemIdadalah sliink:XrSystemId yang valid dari sistem untuk mengambil properti ekstensi.propertyCapacityInputadalah kapasitas arrayproperties, atau 0 untuk menunjukkan permintaan guna mengambil kapasitas yang diperlukan.propertyCountOutputadalah jumlah properti ekstensi yang diminta.propertiesadalah array struktur XrSystemExtensionPropertiesANDROID. Nilainya dapat berupaNULLjikapropertyCapacityInputadalah 0.- Lihat bagian Parameter Ukuran Buffer untuk mengetahui deskripsi mendetail tentang pengambilan ukuran
propertiesyang diperlukan.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_enumerate_system_extension_propertiesharus diaktifkan sebelum memanggil xrEnumerateSystemExtensionPropertiesANDROID -
instanceharus berupa handle XrInstance yang valid -
propertyCountOutputharus berupa pointer ke nilaiuint32_t - Jika
propertyCapacityInputbukan0,propertiesharus berupa pointer ke array strukturpropertyCapacityInputXrSystemExtensionPropertiesANDROID
Kode Status
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
Contoh
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()
);
Masalah
Histori Versi
Revisi 1, 17-03-2026 (Kenny Vercaemer)
- Versi ekstensi awal.