下載
贊助
已知問題
MSVC 和 MinGW 套件之間的差異
Mingw 和 MSVC 套件內容
OpenGL 和 OpenGL ES 通用共享庫
Microsoft CLonD3D12、GLonD3D12、Dozen Vulkan 驅動程式和 D3D12 VA-API 公共依賴項
桌面 OpenGL 驅動程式
OpenGL離螢幕渲染驅動
OpenGL ES 驅動程式和 EGL 函式庫
Vulkan 驅動程式
OpenCL 驅動程式、編譯器和後端
Direct3D 驅動程式、程式庫和工具
VA-API 驅動程式
測試庫和工具
開發包
偵錯包
自己建構 Mesa3D
安裝與使用
使用說明
解除安裝 Mesa3D
舊版軟體相容性
OpenGL 上下文配置覆蓋
如何設定環境變數
使用 Visual Studio 和 MSYS2 Mingw-w64 建置的 Mesa 24.2.6 現已在發布部分提供。
mesa-dist-win 計畫獲得了延長至2024 年11 月1 日的贊助。建置機器,感謝@Directox01,一家虛擬專用伺服器託管公司。
這是所有常見問題以及已知解決方案或解決方法的清單。特定版本僅受其中一部分的影響。
Mesa3D OpenGL ES 和桌面 OpenGL 驅動程式出現libgallium_wgl.dll
缺失錯誤
當更新到 21.3.0 或更高版本時,使用 21.2.x 或更早版本進行的現有每個應用程式部署會遇到這種情況。只需重做每個應用程式部署即可修復它。 Gallium megadriver 與opengl32.dll
的分離是一項非常侵入性的更改,現有的每個應用程式部署沒有機會反對。如果您不記得受影響的程式是 32 位元還是 64 位,請右鍵點選程式可執行檔案所在資料夾中的opengl32.dll
捷徑,然後選擇開啟檔案位置。如果位置以 x64 結尾,則它是 64 位,否則它是 32 位。
Mesa3D OpenGL ES 出現libEGL.dll
遺失錯誤
當更新到 21.3.0 或更高版本時,使用 21.2.x 或更早版本進行的現有每個應用程式部署會遇到這種情況。只需重做每個應用程式部署即可修復它。 EGL 支援是一項非常侵入性的更改,現有的每個應用程式部署都無法抵抗。如果您不記得受影響的程式是 32 位元還是 64 位,請右鍵點選程式可執行檔案所在資料夾中的opengl32.dll
捷徑,然後選擇開啟檔案位置。如果位置以 x64 結尾,則它是 64 位,否則它是 32 位。
MinGW 發行包中的 Mesa3D opengl32.dll
缺少libvulkan-1.dll
錯誤
僅 22.2.0 之前的版本(使用 MSYS2 MinGW-W64 vulkan-devel 軟體包組建置 zink 驅動程式)會受到影響。從 MinGW 發行包中執行fix-libvulkan-1.dll-missing-error.cmd
來修正它。該工具支援透過auto
命令列選項進行無人值守執行。該工具僅在需要時才捆綁在 MinGW 發行包中,否則會故意丟失。決定使用此 Vulkan SDK 而不是 LunarG 的 SDK 是基於更新的載入器和標頭。
MSVC 和 MinGW 軟體包中的 64 位元二進位檔案需要具有 AVX 的 CPU,儘管它們不應該
從 Mesa 22.0 或更高版本開始,這不再是問題。此問題是由包含 swr 驅動程式的 64 位元二進位檔案引起的,該驅動程式會將 AVX 的使用洩漏到公共代碼中。這是此處、此處和此處報告的上游錯誤。
MinGW 套件中的 Mesa opengl32.dll
自 21.0.0 起依賴 Vulkan 運行時
透過包含 zink 驅動程式明確使用的要求,此問題在 22.2.0 中得到修復。這是在修補 zink 驅動程式以支援 Windows 時引入的上游迴歸。
從 21.0.0 開始,使用 Mesa opengl32.dll
時,程式的行為可能就像沒有 OpenGL 支援一樣
這不是缺陷,而是環境變數配置錯誤時 Mesa 的行為變化。這種情況通常發生在選擇使用的發行包中不存在的 Mesa 驅動程式或由於主機系統不滿足硬體要求或缺少依賴項而無法初始化時。閱讀 MSVC 和 MinGW 套件之間的差異以及 Mingw 和 MSVC 套件內容應該有助於故障排除。
有關與缺少libglapi.dll
相關的錯誤的重要說明
您可以透過每個應用程式部署工具使用任何 Mesa3D 桌面 OpenGL 驅動程式的程式來體驗它們,系統範圍的部署不受影響。如果在引入共享 glapi 支援之前完成每個應用程式部署,您可能會遇到這些問題。自 20.0.2 起,共享 glapi 一直在 MSVC 和 MinGW 軟體包中可用。
無論出於何種原因,要糾正這些錯誤,您都必須重新部署。如果您不記得受影響的程式是 32 位元還是 64 位,請右鍵點選程式可執行檔案所在資料夾中的opengl32.dll
捷徑,然後選擇開啟檔案位置。如果位置以 x64 結尾,則它是 64 位,否則它是 32 位。
如果您從 17.3.5.501-1 或更早版本升級,則 osmesa 也會出現相同的問題和相同的解決方案。
MinGW 套件需要具有 SSSE3 的 CPU,其優點是透過軟體渲染驅動程式提供 3-5% 的效能提升;
21.2.0 中引入的 d3d10sw 僅在 MSVC 套件中可用。
如果您需要從 Mingw 遷移到 MSVC 二進位文件,您只需將 Mingw 套件中的 Mesa 二進位檔案資料夾替換為 MSVC 對應文件夾即可。
每個版本中均附帶以下 Mesa3D 驅動程式和建置工件:
GLAPI 共享庫。檔案名稱: libglapi.dll
。在提供 OpenGL 和 OpenGL ES 支援時需要它的存在。 Mesa3D 離屏渲染器以及所有 Mesa3D OpenGL 和 OpenGL ES 驅動程式在存在時都依賴它。自 20.0.2 起,它在 MSVC 和 MSYS2 Mingw-w64 軟體包中均可使用。
鎵 OpenGL 超級驅動器。檔案名稱: libgallium_wgl.dll
。如果存在,它包含所有 Mesa3D 桌面 OpenGL 驅動程序,而不是opengl32.dll
。它於 21.3.0 首次亮相。 Mesa3D EGL 庫和 OpenGL ES 驅動程式依賴它(如果存在)。
Mesa3D WGL 運行時。檔案名稱: opengl32.dll
。它曾經包含所有Mesa3D 桌面OpenGL 驅動程式和OpenGL ES 依賴於它,但自21.3.0 以來,它被簡化為僅作為鎵OpenGL megadriver 的加載程序,因此只有透過每個應用程式部署使用Mesa3D 桌面OpenGL 驅動程式的程序依賴它現在。
用於重新分發的 DirectX IL。檔案名稱: dxil.dll
。此二進位可再發行元件在 Windows SDK 和 DirectX Shader Compiler 中提供,並在發布過程中打包。部署工具會根據需要安裝它。
llvm管道。 llvmpipe 是一個桌面 OpenGL 軟體渲染器,旨在在無法進行硬體加速時作為後備。它只能以良好的性能處理非常輕的遊戲。當 GLonD3D12 不可用或無法載入時,這是預設的 Mesa3D 桌面 OpenGL 驅動程式。它作為 Mesa3D 桌面 OpenGL 捆綁包opengl32.dll
或libgallium_wgl.dll
(如果後者可用)的一部分適用於 x86 和 x64。如果它不是預設驅動程序,請透過設定環境變數GALLIUM_DRIVER=llvmpipe
來選擇它。
softpipe 是桌面 OpenGL 軟體渲染器的參考實現,不關注遊戲效能。它作為 Mesa3D 桌面 OpenGL 捆綁包opengl32.dll
或libgallium_wgl.dll
(如果後者可用)的一部分適用於 x86 和 x64。透過設定環境變數GALLIUM_DRIVER=softpipe
來選擇它。
GLonD3D12。它可用於 MSVC 套件中的 x86 和 x64,自 22.2.0 起可用於 MinGW 套件,以及 Mesa3D 桌面 OpenGL 套件opengl32.dll
或libgallium_wgl.dll
的一部分(如果後者可用)且在 22.3.0 之前作為獨立openglon12.dll
以及。除了官方要求 Windows 10 v10.0.19041.488 或更高版本外,還依賴 DirectX IL 進行重新分發 - dxil.dll
進行加載,可以透過部署工具安裝。如果可用且可以加載,這是 D3D12 GPU 加速系統上的預設 Mesa3D 桌面 OpenGL 驅動程式。 21.0.0 中引入的此驅動程式作為傳回 D3D12 API 呼叫的包裝器運行。由於這種性質,它可以使用 GPU 加速。如果預設未選擇它,您可以透過設定GALLIUM_DRIVER=d3d12
和LIBGL_ALWAYS_SOFTWARE=1
環境變量,使用 Windows 內建的 Direct3D WARP 軟體渲染器進行測試。獨立副本不需要設定GALLIUM_DRIVER=d3d12
,且只能透過系統範圍的部署工具安裝。使用系統範圍的部署工具時,獨立的 GLonD3D12 和 Mesa3D Desktop OpenGL 套裝組合會相互替換,但您可以隨時反轉。
鋅。此驅動程式在 21.0.0 中的 MinGW 套件和 21.2.0 中的 MSVC 套件中引入,它可作為 Mesa3D 桌面 OpenGL 套件opengl32.dll
或libgallium_wgl.dll
(如果後者可用)的一部分用於 x86 和 x64。與 GLonD3D12 類似,它作為返回 Vulkan API 呼叫的包裝器運行。由於這種性質,它預設使用 GPU 加速,但也支援軟體渲染。透過GALLIUM_DRIVER=zink
環境變數選擇它,但請注意,它至少需要 1 個 Vulkan 設備和 Vulkan 載入器/運行時才能初始化。 zink 在 22.1.0 之前預設忽略 Vulkan CPU 類型設備。現在,它使用優先系統,如果不存在更高優先順序的 Vulkan 類型設備,該系統會自動選擇 Vulkan CPU 類型設備。您只能透過設定LIBGL_ALWAYS_SOFTWARE=1
(Mesa 22.1.0 及更高版本)或ZINK_USE_LAVAPIPE=true
(在 Mesa 22.1.0 中已棄用)來測試使用 Vulkan CPU 類型裝置的 zink。
swr。該驅動程式在 Mesa 22.0 及更高版本中不再可用。檔案名稱: swrAVX.dll
、 swrAVX2.dll
、 swrSKX.dll
、 swrKNL.dll
。即使它駐留在 Mesa3D Desktop OpenGL 套件opengl32.dll
或libgallium_wgl.dll
之外(如果後者可用),它仍然依賴它。這種由英特爾開發的替代桌面 OpenGL 軟體渲染驅動程式針對視覺化軟體進行了最佳化。它可以在 MSVC 套件中使用,從 20.1.7 開始也可以在 MinGW 套件中使用。它只支援x64,官方不支援x86。目前有 4 個 DLL,僅根據用戶 CPU 的功能載入一個。您可以透過將 GALLIUM_DRIVER 環境變數值設為 swr 來切換到 swr。
奧斯梅薩。檔案名稱: osmesa.dll
。適用於 x86 和 x64。此驅動程式在特殊情況下由設計為使用 Mesa 程式碼進行渲染而無需任何類型的視窗系統或作業系統依賴性的軟體使用。自 21.0.0 起,僅保留 osmesa 鎵。它支援 OpenGL 3.x 及更高版本。自 20.0.2 起,MSVC 和 MSYS2 Mingw-w64 軟體包中都可以使用 osmesa 與獨立 GLLES 驅動程式集成,在此過程中需要libglapi.dll
。
EGL 函式庫。檔名: libEGL.dll
。 OpenGL ES 驅動程式使用的 Mesa3D EGL 函式庫。它在 21.3.0 中首次亮相,可用於 MSVC 和 MSYS2 軟體包中的 32 位元和 64 位元應用程式。它取決於桌面 OpenGL 套件opengl32.dll
或libgallium_wgl.dll
(如果後者可用)。
OpenGL ES 獨立驅動程式。檔名: libGLESv1_CM.dll
和libGLESv2.dll
。 OpenGL ES 1.x、2.x 和 3.x 獨立驅動程式可用於 32 位元和 64 位元應用程式。自 20.0.2 起,它們在 MSVC 和 MSYS2 Mingw-w64 軟體包中均可使用。它們依賴 Mesa3D EGL 庫(如果可用)和桌面 OpenGL 捆綁包opengl32.dll
或libgallium_wgl.dll
如果後者可用)。
自 21.1.0 起,lavapipe Vulkan CPU 驅動程式在 MSVC 和 MinGW 軟體包中均可使用。檔案名稱: lvp_icd.x86_64.json
、 lvp_icd.x86.json
、 vulkan_lvp.dll
。請注意,某些程式可能會故意忽略 Vulkan CPU 類型的設備。有關如何部署的信息,請參閱使用說明。
Microsoft 十幾個 Vulkan 驅動程式自 22.1.0 起在 MSVC 軟體包中提供,自 22.2.0 起也在 MinGW 軟體包中提供。此驅動程式依賴 D3D12 API 來運行,並且可以在支援的系統上使用 GPU 加速。檔案名稱: dzn_icd.x86_64.json
、 dzn_icd.x86.json
、 vulkan_dzn.dll
。有關如何部署的信息,請參閱使用說明。
根據 @zmike 建議,自 22.1.0 起,AMD 顯示卡 (radv) 的 Vulkan 驅動程式不再可用,因為它很快就無法運作。自 21.2.0 起,RADV 在 MSVC 和 MinGW 軟體包中均可使用。自 Mesa 22.0 起,它的 32 位元二進位檔案就可用了。檔案名稱: radeon_icd.x86_64.json
、 radeon_icd.x86.json
、 libvulkan_radeon.dll
和vulkan_radeon.dll
。有關如何部署的信息,請參閱使用說明。
Microsoft OpenCL 堆疊。檔案名稱: clon12compiler.dll
(編譯器)、 openclon12.dll
(ICD) 和WinPixEventRuntime.dll
(僅限 x64 依賴項)。 21.0.0 中引入的這些元件最終分別從 21.3.0(僅編譯器)和 21.3.6-2 開始由 mesa-dist-win 提供。 CLonD3D12 驅動程式可作為 OpenCL ICD 使用。有關如何部署的信息,請參閱使用說明。 CLonD3D12 官方要求 Windows 10 v10.0.19041.488 或更高版本,它依賴於 DirectX IL 進行重新分發 - dxil.dll
來加載,可以透過部署工具安裝。 CLonD3D12 作為傳回 D3D12 API 呼叫的包裝器運作。由於這種性質,它可以使用 D3D12 GPU 加速(如果可用),否則使用 Windows 內建的 WARP 軟體渲染。使用 WARP 時,CLonD3D12 用於通告 CL_DEVICE_TYPE_GPU,但在 23.0.0 中變更為 CL_DEVICE_TYPE_CPU,請參閱 microsoft/OpenCLOn12#19。有些程式會忽略故意設定 CL_DEVICE_TYPE_CPU 的驅動程式。自 Mesa 24.0.3 起,可以透過將CLON12_WARP_IS_HARDWARE
環境變數值設為 1 來恢復 23.0.0 之前的舊行為。
clover OpenCL 堆疊已從 22.1.1 的發行包中刪除,直到 Windows 支援最終確定,因為它目前不可用。檔案名稱: MesaOpenCL.dll
(ICD)、 OpenCL.dll
(獨立運行時)和pipe_swrast.dll
(管道載入程式)。自 21.3.7 起,可以使用每個應用程式部署工具來部署運行時,也可以透過複製貼上及其依賴的所有可用管道載入程式在舊版本上部署執行時間。部署時,運行時會隱藏系統上存在的所有其他 OpenCL ICD,並且僅允許軟體使用 Mesa3D clover 作為唯一的 OpenCL 驅動程式。有關如何部署 ICD 的信息,請參閱使用說明。
自 21.2.0 起,D3D10 軟體渲染器在 MSVC 套件中提供。檔案名稱: d3d10sw.dll
。這是 Microsoft WARP 的替代品,不幸的是沒有乾淨的方法來部署它。
SPIR-V 到 DXIL 工具和函式庫自 21.0.0 起在 MSVC 軟體包中提供,自 22.2.0 起也在 MinGW 軟體包中提供。檔案名稱: libspirv_to_dxil.dll
、 spirv_to_dxil.dll
和spirv2dxil.exe
。
VA-API D3D12 驅動程式。檔案名稱: vaon12_drv_video.dll
。該驅動程式在 22.3.0 中提供。就像 GLonD3D12、CLonD3D12 等一樣,這是一個運行在 Direct3D 12 API 之上的分層驅動程序,因此它可以使用 GPU 加速(如果可用)。 Microsoft 已記錄部署說明。每個應用程式部署工具已更新以協助此流程。
鎵原始介面。這個已棄用的組件已在 Mesa3D 22.3.0 中刪除。檔案名稱: graw.dll
、 graw_null.dll
。這是一個虛擬的鎵驅動程序,沒有任何圖形 API,主要用於測試。適用於 x86 和 x64 以及完整(支援視窗系統)和無頭(無視窗)版本。自 20.0.2 起,MSVC 和 MSYS2 Mingw-w64 軟體包中都提供了視窗版本和無視窗版本。
測試套件。許多可執行的單元測試。
32 位元和 64 位元版本的標頭和函式庫位於稱為開發包的單獨存檔中。
從 22.2.0 開始,包含 PDB 格式的偵錯符號的 MSVC 偵錯資訊包和 MinGW 斷言啟用的偵錯最佳化建置包可用。 MinGW 調試二進位檔案可以用作其發布版本的直接替代品。對於使用每個應用程式部署的軟體,這應該是無縫的,但對於系統範圍的部署,需要重新部署才能從發布版本切換到偵錯版本,反之亦然。有關 MinGW 調試的更多信息,請參閱 debug/mingw-start-debugging.sh
如果您想複製我的構建,可以在此處找到構建說明。
首先在 Mingw 和 MSVC 套件之間進行選擇。有關詳細信息,請參閱 MSVC 和 MinGW 套件之間的差異部分。在提取發行包之前,請關閉所有使用 Mesa 的程式(如果有)正在運行。解壓縮後,您將可以存取 2 個部署選項,它們都位於您安裝 Mesa 的目錄中。這兩種部署實用程式都具有啟動機制,因此您可以在一個會話中完成所需的所有部署。部署工具僅支援 Mesa3D 的 OpenGL 和 OpenGL ES 元件以及獨立的 OpenCL clover。
一個系統範圍的部署工具。雖然適用於缺乏硬體加速OpenGL 支援的系統(例如雲端環境中的虛擬機),但它也可以在任何Windows 系統上使用,以替換內建軟體渲染OpenGL 1.1 驅動程序,從而擴展OpenGL 支持,以適用於硬件加速OpenGL 不可用(例如RDP 連線)的用例。由於執行 Windows 的 Virtualbox VM 存在潛在問題,如果使用系統範圍的部署工具在其中安裝了 Mesa3D 桌面 OpenGL 驅動程序,建議在此類 VM 中停用 3D 加速,請參閱 #9。
每個應用程式部署工具,用於為單一程式部署 Mesa3D,無論是否存在硬體加速 OpenGL 支援。每個應用程式部署實用程式的變更是持久的,並且在升級和重新安裝過程中都會保留。每個應用程式部署公用程式可協助您節省儲存空間並使事情變得更容易,因為您不必從 Mesa 安裝目錄手動複製 DLL,因為它會建立指向您選擇使用的任何 Mesa 驅動程式的符號連結。此行為可確保使用 Mesa 的所有程式都使用相同的最新版本。如果應用程式是 64 位元或32 位元和您需要的驅動程式。 32 位元應用程式在執行時會在任務管理器中標記其名稱。無論 GPU 功能如何,大多數應用程式都會使用 Mesa,但某些應用程式可能足夠智能,僅從系統目錄載入 OpenGL。透過提供應用程式檔案名,會產生一個 .local 文件,以嘗試強制應用程式在不需要時使用 Mesa3D。此外,Federico Dossena 的 Mesainjector 也可用於此問題。 Mesainjector 的建置說明。
200x 及更早版本的舊應用程式可能需要設定 MESA_EXTENSION_MAX_YEAR 環境變量,請參閱舊版軟體相容性部分。
需要 OpenGL 3.2 或更高版本的應用程式可能需要 OpenGL 上下文配置覆蓋。
此處提供了有關 OpenGL 上下文配置覆蓋、切換到其他驅動程式和舊應用程式相容性的範例。
官方 Mesa3D 文件可在此處取得。
OpenCL ICD 部署是透過向系統 OpenCL 執行時間(例如Windowssystem32
中的opencl.dll
)註冊 ICD 檔案來完成的。如果您沒有系統 OpenCL 運行時,您可以透過安裝 Intel OpenCL CPU 運行時來取得它。它也適用於 AMD CPU。
Vulkan 驅動程式的部署是透過 Vulkan 運行時使用 ICD 發現方法完成的。請注意,Vulkan 運行時與支援 Vulkan 的圖形驅動程式捆綁在一起,因此可能不需要手動安裝。
運行系統範圍的部署並執行卸載操作(如果可用),然後退出;
下載並運行 Everything 工具(任何風格都可以);
運行每個應用程式部署工具並使其保持運行狀態;
在 Everything 工具中,在選單下的文字欄位中輸入libgallium_wgl.dll attrib:L
並保持 Everything 工具運作;
對於 Everything 工具中的每個搜尋結果:
透過「開啟路徑」或「開啟檔案位置」上下文功能表選項在 Windows 資源管理器中開啟其位置;
尋找 *.local 檔案並刪除它們,但前提是您確定在部署到該位置期間指定了檔案名稱;
從網址列複製位置並將其提供給每個應用程式部署工具;
向所有部署發送“否”,直到要求您進行更多部署為止,然後在那裡發送“是”。
分別使用 osmesa.dll 和 graw.dll 檔案名稱重複步驟 4 和 5,與 libgallium_wgl.dll 的操作方式相同;
關閉每個應用程式部署和 Everything 工具;
恢復任何登錄機碼變更以及配置 Vulkan 執行階段以使用任何 Mesa3D Vulkan 驅動程式的任何環境變量,請參閱使用說明以取得有關您可能需要復原哪些潛在變更的線索;
重複步驟 8,但對於 OpenCL。
警告:某些檔案已被每個應用程式部署工具覆蓋的程式可能需要重新安裝/修復。自 22.0.0 起,每個應用程式部署工具都會偵測此部署場景並發出警告。
200x 及更早版本的舊應用程式可能需要設定 MESA_EXTENSION_MAX_YEAR 環境變數以避免緩衝區溢位。它期望年份數字作為值,最常用的是 2001。 它將 Mesa3D 返回的擴展列表修剪為截至並包括提供的年份發布的擴展,因為 Mesa3D 擴展列表按年份排序。
例如: set MESA_EXTENSION_MAX_YEAR=2001
。請參閱如何設定環境變數。
隨著 OpenGL 3.1 的發布,OpenGL 3.0 中標記為棄用的許多功能已被刪除,並且自 OpenGL 3.2 發布以來,該 OpenGL 規範分支被稱為 OpenGL 核心設定檔。此外,在 OpenGL 3.3 中,還引入了 OpenGL 規範的一個新分支(稱為前向相容上下文),該分支刪除了 OpenGL 3.0 棄用的功能(這些功能在 OpenGL 3.1 中未刪除)。大多數專有驅動程式都以 OpenGL 3.1 的 GL_ARB_compatibility 擴充功能和 OpenGL 3.2 及更高版本的兼容性上下文的形式實現了這些變更的豁免。由於複雜性,尤其是缺乏對 GL_ARB_compatibility 和兼容性上下文的正確實現測試,Mesa3D 開發人員選擇推遲該領域的工作,直到 Mesa 18.1 引入 GL_ARB_compatibility 支持,然後 Mesa 21.3 將兼容性上下文支援提高到 llvmpipe 的 OpenGL 4.5。總之,請求 OpenGL 相容性上下文的程式將無法達到 Mesa 18.0 的 OpenGL 3.0、Mesa 18.1 的 3.1 和 Mesa 21.3 及更高版本的 4.5 以上。不幸的是,此類程式在 Windows 上很普遍,開發人員往往避免使用核心設定檔所需的上下文標誌。幸運的是,Mesa3D 提供了一種機制來覆寫所要求的 OpenGL 上下文。有 2 個環境變數會覆蓋 OpenGL 上下文配置:
MESA_GL_VERSION_OVERRIDE
它用於指定OpenGL上下文版本和類型。它需要以下格式的值
OpenGLMajorVersion.OpenGLMinorVersion{FC|COMPAT]。
FC 表示前向相容上下文。 COMPAT 表示 OpenGL 3.2 及更高版本的相容性上下文,並且為 OpenGL 3.1 啟用 GL_ARB_compatibility。版本號後缺少任何字串表示指定的OpenGL 版本的Mesa3D 預設上下文類型如下:為OpenGL 3.0 啟用的已棄用功能、自Mesa 18.1 起為OpenGL 3.1 啟用的GL_ARB_compatibility 以及OpenGL 3.2 及更高版本的核心設定檔。範例:3.3FC 表示 OpenGL 3.3 向前相容上下文,3.1COMPAT 表示具有 GL_ARB_compatibility 的 OpenGL 3.1,3.2 表示 OpenGL 3.2 核心設定檔。 llvmpipe 驅動程式的預設值為 4.5COMPAT(Mesa>=21.3)、3.1COMPAT(Mesa>=18.1)和 3.0COMPAT(Mesa<=18.0)。
該變數提供的一個非常重要的功能是可以配置不完整的 OpenGL 上下文。程式只能從正在使用的 Mesa3D 驅動程式請求具有 Khronos 認證的最高 OpenGL 上下文。目前 llvmpipe 在所有 OpenGL 設定檔中都經過了 OpenGL 4.5 認證。目前,swr 和 GLonD3D12 在核心設定檔/前向相容上下文中已通過 OpenGL 3.3 認證,在相容性設定檔中已通過 OpenGL 3.1 認證。 zink OpenGL 支援取決於底層 Vulkan 驅動程式。由於 Mesa 17.3 的值適用於 OpenGL 4.6,因此可以被辨識。
MESA_GLSL_VERSION_OVERRIDE
用於指定著色語言版本。支援的值是轉換為整數的版本號:110、120、130、140。150、330、400、410、420、430、440、450 和 460。例如,值 130 與 GLSL 1.30 相符。保持 OpenGL 上下文和著色語言版本同步始終是一個好主意,以避免程式混亂,從而導致崩潰或故障。發生這種情況是因為大多數應用程式依賴同步 OpenGL 和 GLSL 版本的專有驅動程式行為。這是 OpenGL - GLSL 關聯表。 llvmpipe 的預設值:如果 MESA_GL_VERSION_OVERRIDE 未定義或與核心設定檔匹配,則 Mesa 21.3 為 450,Mesa 18.1 為 140,Mesa 18.0 為 130。
在 Windows 下,設定環境變數最簡單的方法是編寫批次檔。您很可能需要這樣做:
對於每個需要比所選 Mesa3D 驅動程式預設公開的版本更高的 OpenGL 和 GLSL 版本的應用程式;
如果您想為桌面 OpenGL 選擇非預設驅動程式;
如果您需要修剪擴充功能列表以實現舊程式相容性。
只需打開記事本,編寫批次腳本即可。儲存時,檔案名稱以 .bat 或 .cmd 結尾,將儲存類型變更為所有文件,並將儲存位置變更為應用程式執行檔所在的位置。如果您對批次腳本有一定的了解,您可以在腳本執行期間使用 CD 命令更改當前目錄,從而可以將腳本保存在您想要的任何位置,如 rpcs3 和 GPU Caps Viewer 範例中所示。 Mesa 使用的大多數環境變數的文件可在此處找到。完整的例子可以在這裡找到。
您可以在同一個批次腳本上設定多個環境變數以混合 Mesa3D 提供的功能。