رشته نام
XR_ANDROID_performance_metrics
نوع پسوند
پسوند نمونه
شماره برنامه افزودنی ثبت شده
466
آخرین تاریخ اصلاح
06-09-2024
وضعیت IP
هیچ ادعای IP شناخته شده ای وجود ندارد.
وابستگی های افزونه و نسخه
مشارکت کنندگان
دیمیتری کوتوف، گوگل
لوانا چن، گوگل
جارد فایندر، گوگل
اسپنسر کوین، گوگل
نمای کلی
این برنامه افزودنی APIهایی را برای شمارش و پرس و جوی شمارشگرهای مختلف معیارهای عملکرد دستگاه XR فعلی، کامپوزیتور و برنامه XR فراهم می کند. توسعه دهندگان می توانند تجزیه و تحلیل عملکرد و بهینه سازی هدفمند برنامه XR را با استفاده از شمارنده های معیارهای عملکرد جمع آوری شده انجام دهند. برنامه نباید رفتار خود را بر اساس خواندن شمارنده تغییر دهد.
شمارنده های معیارهای عملکرد در مقادیر از پیش تعریف شده XrPath ، در مسیر ریشه /perfmetrics_android سازماندهی می شوند. یک برنامه کاربردی می تواند شمارنده های موجود را از طریق xrEnumeratePerformanceMetricsCounterPathsANDROID پرس و جو کند. در اینجا فهرستی از مسیرهای شمارشگر معیارهای عملکردی که ممکن است در دستگاههای Android ارائه شوند، آمده است:
- /perfmetrics_android/app/cpu_frametime (میلی ثانیه، شناور) - زمان ساعت دیواری که مشتری برای پردازش یک فریم صرف کرده است.
- /perfmetrics_android/app/gpu_frametime (میلیثانیه، شناور) - زمانی که مشتری ساعت دیواری در انتظار تکمیل کار GPU در هر فریم میماند. یادداشت ها:
- زمان انتظار زیاد میتواند به این معنی باشد که GPU مشغول کارهای دیگر بوده است، نه لزوماً این که این کلاینت کارهای GPU زیادی انجام میدهد.
- زمان انتظار GPU می تواند صفر باشد اگر رندر از قبل توسط کامپوزیتور بررسی شده باشد.
- /perfmetrics_android/app/cpu_utilization (درصد، شناور) - میانگین کل نرخ استفاده از CPU برنامه در طول زمان.
- این می تواند در پردازنده های چند هسته ای بالاتر از 100٪ باشد.
- /perfmetrics_android/app/gpu_utilization (درصد) - میانگین میزان استفاده از GPU برنامه در طول زمان.
- /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 (float) - تعداد فریم های کامپوزیتور ترسیم شده روی دستگاه در هر ثانیه.
- /perfmetrics_android/device/cpu_utilization_average (درصد، شناور) - نرخ بهرهبرداری از CPU دستگاه در تمام هستهها بهطور میانگین محاسبه میشود و در طول زمان میانگین میشود.
- /perfmetrics_android/device/cpu_utilization_worst (درصد، شناور) - میانگین نرخ استفاده از CPU دستگاه از هسته بدترین عملکرد در طول زمان.
- /perfmetrics_android/device/cpu0_utilization از طریق /perfmetrics_android/device/cpuX_utilization (درصد، شناور، X تعداد هستههای CPU منهای یک است) - میانگین میزان استفاده از CPU دستگاه به ازای هر هسته CPU در طول زمان.
- /perfmetrics_android/device/cpu_frequency (MHz، float) - فرکانس CPU دستگاه در همه هستهها به طور متوسط و میانگین در طول زمان محاسبه می شود.
- /perfmetrics_android/device/gpu_utilization (درصد، شناور) - میانگین میزان استفاده از GPU دستگاه در طول زمان.
پس از ایجاد یک جلسه، یک برنامه کاربردی می تواند از xrSetPerformanceMetricsStateANDROID برای فعال کردن سیستم معیارهای عملکرد برای آن جلسه استفاده کند. یک برنامه کاربردی میتواند از xrQueryPerformanceMetricsCounterANDROID برای پرسوجو از شمارنده معیارهای عملکرد در جلسهای که سیستم معیارهای عملکرد فعال است استفاده کند، یا از xrGetPerformanceMetricsStateANDROID برای پرسوجویی در صورت فعال بودن سیستم معیارهای عملکرد استفاده کند.
برای فعال کردن عملکرد این برنامه افزودنی، برنامه باید نام برنامه افزودنی را با استفاده از پارامتر XrInstanceCreateInfo::enabledExtensionNames همانطور که در بخش Extensions نشان داده شده است، به 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
فهرست های جدید
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;
توضیحات اعضا
-
typeXrStructureType این ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
enabledرویXR_TRUEتنظیم شده است تا نشان دهد که سیستم معیارهای عملکرد فعال است، در غیر این صورت،XR_FALSEهنگام دریافت وضعیت. هنگام تنظیم حالت،XR_TRUEرا برای فعال کردن سیستم معیارهای عملکرد وXR_FALSEرا برای غیرفعال کردن آن تنظیم کنید.
XrPerformanceMetricsStateANDROID به عنوان ورودی هنگام فراخوانی xrSetPerformanceMetricsStateANDROID برای فعال یا غیرفعال کردن سیستم معیارهای عملکرد ارائه می شود. XrPerformanceMetricsStateANDROID هنگام فراخوانی xrGetPerformanceMetricsStateANDROID برای پرس و جو در مورد فعال بودن سیستم معیارهای عملکرد به عنوان یک پارامتر خروجی پر می شود.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_performance_metricsباید قبل از استفاده از XrPerformanceMetricsStateANDROID فعال شود -
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;
توضیحات اعضا
-
typeXrStructureType این ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته 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 تکمیل میشود تا اطلاعات شمارنده معیارهای عملکرد زمان واقعی را جستجو کنید.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_performance_metricsباید قبل از استفاده از XrPerformanceMetricsCounterANDROID فعال شود -
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است که توسط زمان اجرا پر شده و شامل تمام شمارندههای معیارهای عملکرد موجود است، اما اگرcounterPathCapacityInput0 باشد، میتواندNULLباشد. - برای توضیحات مفصل در مورد بازیابی اندازه
counterPathsمورد نیاز، به بخش پارامترهای اندازه بافر مراجعه کنید.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_performance_metricsباید قبل از فراخوانی xrEnumeratePerformanceMetricsCounterPathsANDROID فعال شود -
instanceباید یک دسته XrInstance معتبر باشد -
counterPathCountOutputباید یک اشاره گر به یک مقدارuint32_tباشد - اگر
counterPathCapacityInput0 نباشد،counterPathsباید نشانگر آرایه ای از مقادیرcounterPathCapacityInputXrPathباشد.
کدهای بازگشت
-
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 سیستم سنجش عملکرد را فعال یا غیرفعال می کند.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_performance_metricsباید قبل از فراخوانی xrSetPerformanceMetricsStateANDROID فعال شود -
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 وضعیت فعلی سیستم متریک عملکرد را دریافت می کند.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_performance_metricsباید قبل از تماس با xrGetPerformanceMetricsStateANDROID فعال شود -
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 یک شمارنده معیارهای عملکرد را درخواست می کند.
برنامه باید سیستم معیارهای عملکرد را با فراخوانی xrSetPerformanceMetricsStateANDROID قبل از پرس و جوی معیارها با استفاده از xrQueryPerformanceMetricsCounterANDROID فعال کند.
استفاده معتبر (ضمنی)
- برنامه افزودنی
XR_ANDROID_performance_metricsباید قبل از فراخوانی xrQueryPerformanceMetricsCounterANDROID فعال شود -
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
OpenXR™ و لوگوی OpenXR علائم تجاری متعلق به The Khronos Group Inc. هستند و به عنوان یک علامت تجاری در چین، اتحادیه اروپا، ژاپن و بریتانیا ثبت شده اند.