OpenGL ES 2.0 на Tegra2: сколько ядер GPU используется в функциях glDrawArrays / glDrawElements? - PullRequest
0 голосов
/ 10 ноября 2011

Есть ли у кого-нибудь информация о том, сколько ядер GPU будет использоваться, когда я позвоню glDrawArrays / glDrawElements?

Немного подробнее, чтобы объяснить мой вопрос. Процессор Tegra2 имеет 4-ядерный GPU. Для работы используется libGLESv2.so. После всех подготовительных работ (создание и связывание шейдеров, загрузка текстур и т. Д.), Я вызываю функцию DRAW, которая запускает растеризацию и создает изображение в фреймбуфере. Я думаю, что функция DRAW должна использовать как можно больше ядер, чтобы сделать растеризацию быстрее. Но я не могу найти никаких документов, которые подтверждают мою теорию. Описание OpenGL содержит только информацию о собственном уровне API, и, понятно, никакой информации о уровнях ниже. NVIDIA не представляет описание того, как реализован libGLESv2.so.

1 Ответ

0 голосов
/ 15 ноября 2011

Если никто не хочет отвечать, я сделаю это сам:)

После нескольких попыток я получил следующие результаты: !! Пожалуйста, обратите внимание, что я использую графический процессор для вычисления данных.Используя линейные массивы данных, экран определяется с помощью высоты = 1 и размера массива.Чтобы вычислить строку с размером wight = размер массива.

  1. Функции DRAW используют максимально возможное количество ядер.
  2. Но это зависит от того, сколько вершин отправлено в DRAW.Например: если линия (2 вершины) нарисована, получается одно представление.Если эта строка разделена на несколько маленьких строк (4 или более вершин), производительность будет лучше.

В целом, поскольку я предполагаю, что для использования всех ядер необходимо вызывать DRAW с числомвершины как минимум равны количеству ядер GPU.В моем случае вычисления были быстрее примерно на 20%, когда линия была разделена на две сублинии.Следующее разделение почти не дало увеличения производительности.

...