Как начать писать низкоуровневый GPU-профилировщик?

8

В последние дни я изучал аппаратные профилировщики GPU корпорации (Qualcomm, PowerVR, Intel). Я заметил, что эти инструменты, по-видимому, дают более низкоуровневую информацию, чем профилировщики графических процессоров, которые я использовал в прошлом - захват и апитрас кадров XCode OpenGL ES - в котором только перечислялись, какие вызовы OpenGL были сделаны и какое состояние тока ресурсы есть.

Как мне начать, если я хочу создать низкоуровневый инструмент, который отображает такие вещи, как пропуски кэша сэмплера и код ассемблера шейдера?


источник

Ответы:

6

Для базовых данных синхронизации GPU вы можете использовать запросы метки времени D3D или эквивалентные запросы таймера OpenGL .

Любые низкоуровневые аппаратные данные, такие как пропадание кеша, будут зависеть от производителя. Каждый поставщик графических процессоров имеет свой собственный API или расширение для предоставления доступа к низкоуровневым данным о производительности на своем оборудовании. API-интерфейсы различаются по тому, как они работают, и они не обязательно все раскрывают одни и те же детали. Доступные данные также могут различаться для разных моделей чипов одного и того же производителя, поэтому вам, вероятно, нужно немного узнать о том, как работает оборудование, чтобы понять его.

Здесь приведены ссылки на соответствующие API для большинства основных поставщиков графических процессоров.

Натан Рид
источник
О, круто, наверное, мне следовало немного покопаться на сайтах корпорации. Я предположил, что, поскольку apitrace не предлагал эти детали, происходило какое-то изменение. Спасибо!
о, я думал, что он хотел написать еще один перфкит. что ответ будет то, что это невозможно, если вы не делаете свое собственное оборудование.
v.oddou