اشکال‌زدایی اشکالات انیمیشن

یکی از دشوارترین مشکلات برای توسعه‌دهندگان برنامه، ایجاد انیمیشن روان و بدون اشکال است. اشکال‌زدایی این مشکل می‌تواند به ویژه زمانی که سیستم در حال انجام وظایف پس‌زمینه با منابع فشرده است، دشوار باشد. تشخیص اینکه آیا یک اشکال توسط برنامه شما یا سیستم ایجاد شده است، می‌تواند دشوار باشد. با این حال، یک ابزار پروفایلر می‌تواند به شما در شناسایی منبع احتمالی رفتار بد کمک کند.

رندر در ChromeOS

یک برنامه‌ی بهینه‌شده، مانند یک بازی، معمولاً از بافرینگ دوگانه استفاده می‌کند تا زمان پاسخ کاربر را تا حد امکان پایین نگه دارد. با این حال، بسیاری از چیزها می‌توانند عملکرد را کاهش دهند. برای مثال، اگر رندر یک فریم خیلی طول بکشد، نتیجه‌ی رندر شده برای تعویض بافر بعدی آماده نیست و فریم قبلی تکرار می‌شود.

سپس، رندرکننده نمی‌تواند رندر فریم بعدی را شروع کند و باعث مشکلات بیشتری می‌شود. این سناریو برای توسعه‌دهندگان موبایل اندروید آشناست. وقتی یک برنامه روی ChromeOS اجرا می‌شود، زمینه حتی پیچیده‌تر هم می‌شود.

یک برنامه که روی دسکتاپ اجرا می‌شود، مستقیماً روی قاب نمایشگر صفحه نمایش رندر نمی‌شود. در عوض، داده‌های خود را در یک بافت رندر می‌کند. معمولاً چندین برنامه وجود دارد که هر کدام گرافیک خود را در یک بافت رندر می‌کنند. سیستم با استفاده از یک کامپوزیتور، نمای روی صفحه را می‌سازد تا تمام بافت‌ها را در یک تصویر دسکتاپ واحد ترکیب کند.

کامپوزیتور به صورت شفاف در پس‌زمینه کار می‌کند، اما یک تأخیر زمانی یک فریمی را برای به حداکثر رساندن استفاده از خط لوله GPU معرفی می‌کند. این تأخیر، نوسانات عملکرد سیستم را هموار می‌کند و به متعادل کردن بار نامتقارن کمک می‌کند.

وقتی سیستم‌عامل به‌شدت کار می‌کند، ممکن است پردازنده‌ی گرافیکی (GPU) تحت فشار قرار گیرد و باعث ایجاد تأخیر بین رندر شدن یک فریم و نمایش آن روی صفحه شود. سیستم ممکن است بسته به سخت‌افزار، از بافرینگ چهارگانه برای جبران این تأخیر استفاده کند. حتی با بافرینگ عمیق‌تر، خط لوله‌ی گرافیکی همچنان می‌تواند دچار مشکل شود.

ردیاب گرافیکی ARC

ChromeOS یک ابزار پروفایلینگ دارد که نشان می‌دهد بافرها چگونه در سیستم پخش می‌شوند، چه زمانی تعویض حافظه رخ می‌دهد، CPU/GPU چقدر مشغول است و برنامه شما در یک زمان معین چه کاری انجام می‌دهد، همانطور که در تصویر زیر نشان داده شده است:

رابط کاربری ردیاب گرافیکی ARC، جدول زمانی فرآیندهای سیستم را نشان می‌دهد.
شکل ۱. رابط کاربری ردیاب گرافیکی ARC، که جدول زمانی فرآیندهای سیستم را نشان می‌دهد.

تنظیم پروفایلر

برای استفاده از پروفایلر، باید M75 یا بالاتر را اجرا کنید. برای بهترین نتیجه، از یک دستگاه اینتل استفاده کنید.

قبل از استفاده از پروفایلر، برنامه خود را با ردیابی‌ها (traces) راه‌اندازی کنید. هر جا که می‌خواهید ردیابی را وارد کنید Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>); را به کد خود اضافه کنید. از Event استفاده کنید که با پیشوند customTrace شروع شود. این پیشوند در پیام ردیابی ظاهر نمی‌شود.

برای تنظیم پروفایلر، مراحل زیر را دنبال کنید:

  1. حالت توسعه‌دهنده را روشن کنید.
  2. تنظیمات کروم را روشن کنید و ابزار تجسم بافرهای گرافیکی ARC را فعال کنید.
  3. به chrome://arc-graphics-tracing بروید.

اجرای پروفایلر

  1. توقف در صورت بروز مشکل (glitch) را انتخاب کنید.
  2. برنامه اندروید را اجرا کنید.
  3. وقتی برنامه اندروید فعال است و فوکوس دارد، Control + Shift + G را فشار دهید.

وقتی مشکلی پیش می‌آید، یک پنجره مرورگر باز می‌شود. از کلیدهای W و S برای بزرگنمایی و کوچک کردن خط زمانی استفاده کنید.