Как отличается Mesa от OpenGL-драйверов?

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

Ответ 1

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

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

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

Ответ 2

Я считаю, что член форума 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.

Источник