Подтвердить что ты не робот

Существует ли API нижнего уровня за пределами DirectX/OpenGL?

Я слышал, что вызовы OpenGL и DirectX фактически преобразуются видеодрайвером в конкретные вызовы на карте. Я также знаю, что иногда новый видеодрайвер может повысить производительность на 50% в видеоигре без участия разработчика. Если я хочу контролировать мелкие зерна над видеокартой, возможно ли это на уровне ниже DX/OpenGL? Nvidia/AMD выпускает специальные API-интерфейсы поставщиков?

4b9b3361

Ответ 1

NVidia сохраняет свою модель программирования графических процессоров в секрете. Нет шансов получить меньше, чем DirectX, OpenGL, CUDA или OpenCL.

AMD/ATI открыли свою документацию, но это, вероятно, слишком низкий уровень для каждодневного программиста работы: http://developer.amd.com/documentation/guides/pages/default.aspx#open_gpu

Intel открывает источники своих драйверов Linux и там есть какая-то документация.

Linux-драйверы с открытым исходным кодом для AMD и Intel проходят через низкоуровневый API под названием DRI2/DRM; в сочетании с KMS, также называемым Gallium. MesaGL находится на вершине DRI, поэтому в Linux на графической карте фактически есть такой API, как API OpenGL. MesaGL - это так называемый трекер состояния DRI, и из того, что я слышу, разработчики WINE уже почти закончили отслеживание состояния Direct3D-10 (и 11?), Поэтому в обозримом будущем в этом случае поддержка Direct3D будет поддерживаться WINE. Конечно, будет работать с DRI, поэтому поддержка NVIDIA GPU не поддерживается.

Ответ 2

Забудьте об этом, вы потратите МНОГО больше времени на чтение каких-то SDK и поддержку всех возможных видеокарт. Позвольте мне дать вам совет: просто прочитайте статьи, которые объясняют, как эффективно использовать приложения D3D или OpenGL (кеширование, переключение контекста и т.д.).

Ответ 3

В AMD/ATI:

OpenCL --compiles to- > IL - сопоставляет to- > ISA -links to- > исполняемый файл ELF

В NVIDIA:

OpenCL - компилирует to- > PTX -компьютеры to- > ISA -links to- > исполняемый формат какого-либо типа

Для AMD использовалась CAL, которая обеспечивает доступ на более низкий уровень, чем OpenGL/OpenCL, но она устарела. Есть некоторые подсказки, что доступ к IL и ISA будет доступен через OpenCL. Просмотр темы: http://forums.amd.com/forum/messageview.cfm?catid=390&threadid=150149&forumid=9

Ответ 4

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