دیباگ پویانمایی

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

رندر در ChromeOS

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

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

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

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

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

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

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

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

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

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

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

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

پروفایلر را اجرا کنید

  1. stop on jank را انتخاب کنید.
  2. برنامه اندروید را اجرا کنید.
  3. وقتی برنامه اندروید فعال است و فوکوس دارد، Control + Shift + G را فشار دهید.

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