XR_ANDROID_performance_metrics OpenXR এক্সটেনশন

নাম স্ট্রিং

XR_ANDROID_performance_metrics

এক্সটেনশন প্রকার

ইনস্ট্যান্স এক্সটেনশন

নিবন্ধিত এক্সটেনশন নম্বর

466

সর্বশেষ সংশোধিত তারিখ

2024-09-06

আইপি স্ট্যাটাস

কোন পরিচিত আইপি দাবি.

এক্সটেনশন এবং সংস্করণ নির্ভরতা

OpenXR 1.0

অবদানকারী

দিমিত্রি কোটভ, গুগল

লেভানা চেন, গুগল

জ্যারেড ফাইন্ডার, গুগল

স্পেন্সার কুইন, গুগল

ওভারভিউ

এই এক্সটেনশনটি বর্তমান XR ডিভাইস, কম্পোজিটর এবং XR অ্যাপ্লিকেশনের বিভিন্ন পারফরম্যান্স মেট্রিক্স কাউন্টার গণনা এবং অনুসন্ধান করার জন্য API প্রদান করে। বিকাশকারীরা পারফরম্যান্স বিশ্লেষণ করতে পারে এবং সংগ্রহ করা কর্মক্ষমতা মেট্রিক্স কাউন্টারগুলি ব্যবহার করে XR অ্যাপ্লিকেশনের লক্ষ্যযুক্ত অপ্টিমাইজেশন করতে পারে। কাউন্টার রিডের উপর ভিত্তি করে অ্যাপ্লিকেশনটির আচরণ পরিবর্তন করা উচিত নয়।

পারফরম্যান্স মেট্রিক্স কাউন্টারগুলি রুট পাথ /perfmetrics_android- এর অধীনে পূর্বনির্ধারিত XrPath মানগুলিতে সংগঠিত। একটি অ্যাপ্লিকেশন xrEnumeratePerformanceMetricsCounterPathsANDROID এর মাধ্যমে উপলব্ধ কাউন্টারগুলিকে জিজ্ঞাসা করতে পারে । এখানে পারফরম্যান্স মেট্রিক্স কাউন্টার পাথগুলির একটি তালিকা রয়েছে যা Android ডিভাইসগুলিতে সরবরাহ করা যেতে পারে :

  • /perfmetrics_android/app/cpu_frametime (মিলিসেকেন্ড, ফ্লোট) - ওয়ালক্লক সময় ক্লায়েন্ট একটি ফ্রেম প্রক্রিয়া করতে ব্যয় করেছে।
  • /perfmetrics_android/app/gpu_frametime (মিলিসেকেন্ড, ফ্লোট) - ওয়ালক্লক সময় ক্লায়েন্ট প্রতি ফ্রেমে জিপিইউ কাজ সম্পূর্ণ হওয়ার জন্য অপেক্ষা করে। নোট:
    • একটি উচ্চ অপেক্ষার সময় মানে হতে পারে যে 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 (মিলিসেকেন্ড, ফ্লোট) - ওয়ালক্লক টাইম কম্পোজিটর প্রতি ফ্রেমে জিপিইউ কাজ সম্পূর্ণ হওয়ার জন্য অপেক্ষা করে।
  • /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 প্যারামিটার ব্যবহার করে অ্যাপ্লিকেশনটিকে এক্সটেনশনটির নাম 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

নতুন 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 তে সেট করা হয়েছে, অন্যথায় XR_FALSE স্থিতি পাওয়ার সময়। অবস্থা সেট করার সময়, কর্মক্ষমতা মেট্রিক্স সিস্টেম সক্ষম করতে XR_TRUE এবং এটি নিষ্ক্রিয় করতে XR_FALSE তে সেট করুন৷

পারফরম্যান্স মেট্রিক্স সিস্টেম সক্ষম বা অক্ষম করতে xrSetPerformanceMetricsStateANDROID কল করার সময় XrPerformanceMetricsStateANDROID ইনপুট হিসাবে সরবরাহ করা হয়। পারফরম্যান্স মেট্রিক্স সিস্টেম সক্ষম হলে জিজ্ঞাসা করার জন্য xrGetPerformanceMetricsStateANDROID কল করার সময় XrPerformanceMetricsStateANDROID একটি আউটপুট প্যারামিটার হিসাবে পপুলেট করা হয়৷

বৈধ ব্যবহার (অন্তর্নিহিত)

  • 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;

সদস্য বিবরণ

  • 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 কল করে জনবহুল হয়।

বৈধ ব্যবহার (অন্তর্নিহিত)

  • 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 এর একটি অ্যারে যাতে সমস্ত উপলব্ধ কর্মক্ষমতা মেট্রিক্স কাউন্টার থাকে, কিন্তু counterPathCapacityInput 0 হলে তা NULL হতে পারে
  • প্রয়োজনীয় counterPaths আকার পুনরুদ্ধার করার বিশদ বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।

বৈধ ব্যবহার (অন্তর্নিহিত)

  • XR_ANDROID_performance_metrics এক্সটেনশনটি xrEnumeratePerformanceMetricsCounterPathsANDROID কল করার আগে সক্রিয় করা আবশ্যক
  • instance অবশ্যই একটি বৈধ XrInstance হ্যান্ডেল হতে হবে
  • counterPathCountOutput একটি uint32_t মানের একটি পয়েন্টার হতে হবে
  • counterPathCapacityInput 0 না হলে, counterPaths অবশ্যই counterPathCapacityInput XrPath মানগুলির একটি অ্যারের একটি পয়েন্টার হতে হবে

রিটার্ন কোড

সফলতা

  • 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_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_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 ফাংশন একটি কর্মক্ষমতা মেট্রিক্স কাউন্টার জিজ্ঞাসা করে।

xrQueryPerformanceMetricsCounterANDROID ব্যবহার করে মেট্রিক্স জিজ্ঞাসা করার আগে অ্যাপ্লিকেশনটিকে xrSetPerformanceMetricsStateANDROID-এ কল করে পারফরম্যান্স মেট্রিক্স সিস্টেম সক্রিয় করা উচিত

বৈধ ব্যবহার (অন্তর্নিহিত)

রিটার্ন কোড

সফলতা

  • 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