2012-02-06 2 views
0

Мне нужно время, которое потребовалось, чтобы иметь дело с набором вызовов рисования на стороне gpu. Для этого OpenGL 3.2+ имеет расширение «GL_ARB_timer_query». К сожалению, MacOSX по-прежнему не поддерживает это расширение.Время работы GPU с OpenGL на MacOSX

Как бы вы могли измерить время на стороне gpu, должен быть старомодный способ или другой способ сделать это.

+0

Вам даже не нужен GL 3.2 (где он не является расширением, а частью ядра, так или иначе) для 'ARB_timer_query'. У меня даже было это на 2,1-только 7850GT, но хорошо это был не Mac;) –

+0

Можете ли вы оценить больше? Насколько я знаю, расширение полностью недоступно ... – niktehpui

+0

Как я уже сказал, я не знаю о ситуации с MacOSX, поскольку я никогда с ним не работал. Я просто хотел сказать, что вам не нужны аппаратные средства или драйвер GL 3.2 для расширения ARB_timer_query, так как аппаратное обеспечение и драйверы поддерживают расширение, которое полностью отключено от GL 3.2 (где он не является расширением в любом случае , но основная особенность). –

ответ

1

Не будет glFinish() с работающим таймером стороны?

+0

Ну, это будет, по крайней мере, проблема, когда вызовы рисования не являются последними операциями, которые вы хотите выполнить, или когда вы просто не хотите останавливать весь конвейер или блокировать все приложение ЦП. Но, может быть, для специального тестового прогона. –

+0

, тогда мне пришлось бы запускать glFinish и таймер сбоку хоста в отдельном потоке, потому что в противном случае я заставил бы другую точку синхронизации между mainthread и gpu, если я думаю об этом прямо. Мне нужны настройки gpu следующего кадра не на одном кадре, поэтому эта точка синхронизации не нужна. Возможно, я должен был упомянуть об этом заранее ... – niktehpui

+0

Вы также можете попробовать ARB_sync с таймером на стороне хоста. Хотя это может быть сложнее. – ronag

2

Как бы вы могли измерить время на стороне gpu, должен быть старомодный способ или другой способ сделать это.

Почему это должно быть? Действительно, ARB_timer_query существует, потому что никогда не способ времени GPU. Для этого он нужен, и это единственный точный механизм OpenGL.

Всегда были общие методы профилирования, такие как изменение разрешения для проверки, чтобы убедиться, что вы «заполнены» или нет, и так далее. Но нет способа реально измерить время обработки GPU в OpenGL, отличном от ARB_timer_query.

Смежные вопросы