Як я можу окремо проаналізувати швидкість шейдерів вершин та фрагментів?


11

Мені хотілося б дізнатися, як я можу перевірити, чи є моя вершина або мій фрагмент шейдера вузьким місцем у моєму конвеєрі візуалізації.

Я читав про використання glQueryCounterз GL_TIMESTAMPціллю для отримання контрольних точок годинника між командами OpenGL, але вони не розрізняють різні типи шейдерів.

Наприклад, якщо один кадр на графічному процесорі займає 8 мс для візуалізації, чи можу я сказати, що вершина шейдера займала 7 мс, а фрагмент шейдера займав 1 мс?

Відповіді:


12

Шейдери вершин та фрагментів працюють одночасно, а не послідовно, і GPU автоматично завантажує баланси між ними, тому неможливо осмислено призначити конкретні таймінги, такі як 7 мс для одного та 1 мс для іншого.

Однак ви можете зробити простий експеримент, щоб виміряти, де лежить вузьке місце: встановіть матрицю перегляду-проекції на всі нулі для всіх ваших викликів притягнення. Це змушує всі вершини виводити нуль для своїх позицій і змушує всі трикутники вироджуватися; отже, це коротке замикання всієї растерізації та затінення фрагментів, зберігаючи при цьому всі вершинні шейдери (компілятор шейдерів не може нічого оптимізувати, оскільки не знає, що матриця буде встановлена ​​на нуль під час виконання).

Коли ви вимірюєте продуктивність за допомогою нульових матриць, ви побачите кількість часу, необхідного для запуску лише вершинних шейдерів, без одночасних робіт з растеризації та затінення фрагментів у графічному процесорі. Потім ви можете порівняти це з кількістю часу, необхідного для звичайної візуалізації для кожного проходу. Якщо два рази схожі, пропуск, ймовірно, дуже обмежений вершиною; якщо візуалізація з нульовою матрицею значно швидша, вона, ймовірно, пов'язана з пікселями. Можна також отримати проміжний результат, що вказує на те, що робота розподілена приблизно рівномірно між ними.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.