Драйвер DRM разрешает доступ к графическому процессору, в то время как фактический драйвер GPU готовит командный поток. Только первое относится к безопасности и должно выполняться в ядре, в то время как последнее является очень сложным и лучше реализуется как пользовательский процесс.
Драйвер ядра задает диапазоны адресов, как для CPU-> GPU-доступа (сопоставления BAR), так и для GPU-> Memory accesses (DMA regions).
Это гарантирует, что графический процессор может получить доступ только к выделенной памяти DMA, чтобы остановить программы GPU от считывания конфиденциальных данных, таких как пароли, и, в зависимости от возможностей движка DMA GPU, может даже настроить несколько контекстов, дополнительно ограничивающих GPU для буферов DMA, представленных вместе с программой.
Полный драйвер GPU использует эту функцию для запроса контекстов устройства и сопоставлений памяти DMA, компиляции таких программ, как шейдеры или ядра OpenCL, и передает их через драйверы низкого уровня.
Спасибо. Это очень помогло. Еще один вопрос заключается в том, что фактический драйвер GPU (работает в пользовательском пространстве) - это что-то внутри драйверов MESA 3D или x11? Или они совершенно разные? – jaeyong
Оба. X11 обрабатывает примитивы 2D-составов и композицию, Mesa обрабатывает 3D. –
Ох ... Похоже, есть недоразумение. Мой вопрос был «конкретный драйвер для конкретного поставщика», а библиотеки рисования X11/MESA - это одно и то же? или нет? – jaeyong