Чем Mesa отличается от драйверов OpenGL?

что именно означает сказать, что Mesa является реализацией OpenGL? Разве драйверы моей карты Nvidia не реализуют все функции OpenGL и т. д.? Итак, учитывая, что драйверы моей карты Nvidia принимают вызовы Opengl и передают их аппаратному обеспечению, что именно делает Mesa? Может ли кто-нибудь уточнить различие между Mesa и драйверами?

2 ответов


может ли кто-нибудь уточнить различие между Mesa и драйверами?

Mesa предоставляет интерфейс OpenGL на стороне клиента для драйверов GPU с открытым исходным кодом на основе архитектуры DRI2/DRM. Или другими словами: это часть драйвера.

Если у вас установлены проприетарные драйверы от NVidia или AMD, вам не нужна Mesa. Если вы хотите использовать драйверы с открытым исходным кодом (nouveau, radeon, radeonhd, intel), вы нужно Меса.


Я верю LinuxQuestions.org участник форума geeman2.0 дал хорошее объяснение этому вопросу:

OpenGL и Mesa на самом деле не являются двумя отдельными вариантами, а скорее Mesa-это определенный тип OpenGL.

OpenGL это просто интерфейс, который определяет стандартный набор функций, необходимых для рисования 3D-графики. Он не включает в себя фактический код, который делает эти функции, он только определяет, какие функции называются и каковы они делать.

реализация openGL предоставляет фактический код, который запускает методы, указанные стандартом OpenGL. Без установленной реализации вы не сможете запускать программы opengl.

Mesa-это только одна из многих реализаций OpenGL и является самой стандартной, включенной в дистрибутивы linux. Он выполняет всю работу в программном обеспечении, поэтому он медленный.

при установке драйверов Nvidia или ATI для причудливой видеокарты, эти драйверы предоставляют новую реализацию OpenGL, которая выполняется на видеокарте. Эта реализация займет место реализации Mesa, но она по-прежнему является реализацией openGL. То есть все драйверы Mesa/ATI/NVidia реализуют один и тот же набор функций, они просто делают это по-разному, и все они openGL.

источник