Descargas
Patrocinio
Problemas conocidos
Diferencias entre los paquetes MSVC y MinGW
Contenido del paquete Mingw y MSVC
Bibliotecas compartidas comunes de OpenGL y OpenGL ES
Microsoft CLonD3D12, GLonD3D12, controlador Dozen Vulkan y dependencia común D3D12 VA-API
Controladores OpenGL de escritorio
Controlador de renderizado fuera de pantalla OpenGL
Controladores OpenGL ES y biblioteca EGL
conductores vulcanos
Controladores, compiladores y backends de OpenCL
Controladores, bibliotecas y herramientas de Direct3D
Controladores VA-API
Biblioteca de pruebas y herramientas
Paquetes de desarrollo
Paquetes de depuración
Construya Mesa3D usted mismo
Instalación y uso
Notas de uso
Desinstalar Mesa3D
Compatibilidad de software heredado
Anulación de la configuración del contexto OpenGL
Cómo configurar variables de entorno
Las compilaciones de Mesa 24.2.6 con Visual Studio y MSYS2 Mingw-w64 ahora están disponibles en la sección de lanzamientos.
El proyecto mesa-dist-win recibió un patrocinio que se extendió hasta el 1 de noviembre de 2024. El patrocinio consiste en un VPS gratuito en el nodo francés para usar como máquina de construcción con 12 GB de RAM, 6 subprocesos AMD EPYC 7763 y 150 GB NVMe SSD de Petrosky. una empresa de alojamiento de servidores privados virtuales gracias a @Directox01.
Esta es una lista de todos los problemas encontrados comúnmente con soluciones o soluciones alternativas conocidas. Una versión específica sólo se ve afectada por un subconjunto de ellas.
Falta el error libgallium_wgl.dll
con los controladores Mesa3D OpenGL ES y OpenGL de escritorio
Esto ocurre con implementaciones existentes por aplicación realizadas con 21.2.x o anterior al actualizar a 21.3.0 o posterior. Simplemente rehaga la implementación por aplicación para solucionarlo. La separación de Gallium megadriver de opengl32.dll
fue un cambio muy invasivo contra el cual las implementaciones existentes por aplicación no tenían ninguna posibilidad. Si no recuerda si un programa afectado es de 32 o 64 bits, haga clic derecho en el acceso directo opengl32.dll
en la carpeta donde se encuentra el ejecutable del programa y seleccione la ubicación del archivo abierto. Si la ubicación termina en x64, entonces es de 64 bits; de lo contrario, es de 32 bits.
Falta el error libEGL.dll
con Mesa3D OpenGL ES
Esto ocurre con implementaciones existentes por aplicación realizadas con 21.2.x o anterior al actualizar a 21.3.0 o posterior. Simplemente rehaga la implementación por aplicación para solucionarlo. La compatibilidad con EGL fue un cambio muy invasivo contra el cual las implementaciones existentes por aplicación no tenían ninguna posibilidad. Si no recuerda si un programa afectado es de 32 o 64 bits, haga clic derecho en el acceso directo opengl32.dll
en la carpeta donde se encuentra el ejecutable del programa y seleccione la ubicación del archivo abierto. Si la ubicación termina en x64, entonces es de 64 bits; de lo contrario, es de 32 bits.
Falta el error libvulkan-1.dll
con Mesa3D opengl32.dll
del paquete de lanzamiento MinGW
Solo se ven afectadas las versiones anteriores a 22.2.0 para las cuales el controlador zink se creó con el grupo de paquetes vulkan-devel MSYS2 MinGW-W64. Ejecute fix-libvulkan-1.dll-missing-error.cmd
desde el paquete de versión MinGW para corregirlo. Esta herramienta admite la ejecución desatendida mediante la opción de línea de comando auto
. Esta herramienta solo se incluye en el paquete de lanzamiento de MinGW cuando es necesario; de lo contrario, se falta intencionalmente. La decisión de utilizar este SDK de Vulkan en lugar del de LunarG se toma en función del cargador y los encabezados más nuevos.
Los binarios de 64 bits en los paquetes MSVC y MinGW requieren una CPU con AVX aunque no deberían
Esto ya no es un problema a partir de Mesa 22.0 o posterior. Este problema se debe a archivos binarios de 64 bits que contienen un controlador swr que filtra el uso de AVX en código común. Este es un error ascendente reportado aquí, aquí y aquí.
Mesa opengl32.dll
del paquete MinGW depende del tiempo de ejecución de Vulkan desde 21.0.0
Esto se solucionó en 22.2.0 al incluir este requisito para eliminar el uso explícito del controlador. Esta es una regresión ascendente introducida cuando se parcheó el controlador zink para que sea compatible con Windows.
Los programas pueden comportarse como si no hubiera soporte para OpenGL cuando usan Mesa opengl32.dll
desde 21.0.0
Esto no es un defecto sino más bien un cambio de comportamiento de Mesa cuando las variables de entorno están mal configuradas. Suele ocurrir cuando se selecciona un controlador Mesa que no existe en el paquete de versión utilizado o no se inicializa debido a que el sistema host no cumple con los requisitos de hardware o carece de dependencias. Leer las diferencias entre los paquetes MSVC y MinGW y el contenido de los paquetes Mingw y MSVC debería ayudar en la resolución de problemas.
Notas importantes sobre errores relacionados con la falta de libglapi.dll
Puede experimentarlos con programas que utilizan cualquier controlador OpenGL de escritorio Mesa3D a través de la herramienta de implementación por aplicación; la implementación en todo el sistema no se ve afectada. Es posible que los experimente si la implementación por aplicación se realizó antes de que se introdujera la compatibilidad con glapi compartido. glapi compartido ha estado disponible constantemente en paquetes MSVC y MinGW desde 20.0.2.
Para corregir estos errores, independientemente de la causa, debe volver a implementar. Si no recuerda si un programa afectado es de 32 o 64 bits, haga clic derecho en el acceso directo opengl32.dll
en la carpeta donde se encuentra el ejecutable del programa y seleccione la ubicación del archivo abierto. Si la ubicación termina en x64, entonces es de 64 bits; de lo contrario, es de 32 bits.
El mismo problema con la misma solución se aplica a osmesa si actualiza desde 17.3.5.501-1 o anterior.
El paquete MinGW requiere una CPU con SSSE3 con la ventaja de proporcionar un aumento de rendimiento del 3 al 5 % con controladores de renderizado de software;
d3d10sw introducido en 21.2.0 solo está disponible en el paquete MSVC.
Si necesita migrar de Mingw a archivos binarios de MSVC, solo necesita reemplazar la carpeta de archivos binarios de Mesa del paquete Mingw con su contraparte de MSVC.
Los siguientes controladores Mesa3D y artefactos de compilación se incluyen en cada versión:
Biblioteca compartida GLAPI. Nombre del archivo: libglapi.dll
. Su presencia es necesaria cuando se proporciona soporte tanto para OpenGL como para OpenGL ES. El renderizador fuera de pantalla Mesa3D y todos los controladores Mesa3D OpenGL y OpenGL ES dependen de él cuando están presentes. Desde 20.0.2 está disponible en paquetes MSVC y MSYS2 Mingw-w64.
Megadriver Galio OpenGL. Nombre del archivo: libgallium_wgl.dll
. Cuando está presente, contiene todos los controladores OpenGL de escritorio Mesa3D en lugar de opengl32.dll
. Debutó en 21.3.0. La biblioteca Mesa3D EGL y los controladores OpenGL ES dependen de ella cuando están presentes.
Tiempo de ejecución de Mesa3D WGL. Nombre del archivo: opengl32.dll
. Esto solía contener todos los controladores OpenGL de escritorio Mesa3D y OpenGL ES dependía de él, pero desde 21.3.0 se redujo a ser solo un cargador para el megadriver OpenGL de galio, por lo que solo los programas que usan controladores OpenGL de escritorio Mesa3D a través de la implementación por aplicación dependen de él. ahora.
DirectX IL para redistribución. Nombre del archivo: dxil.dll
. Este binario redistribuible se proporciona en Windows SDK y DirectX Shader Compiler y se empaqueta durante el proceso de lanzamiento. Las herramientas de implementación lo instalan según sea necesario.
llvmpipe. llvmpipe es un renderizador de software OpenGL de escritorio pensado como respaldo cuando la aceleración del hardware no es posible. Sólo puede manejar juegos muy ligeros con buen rendimiento. Este es el controlador OpenGL de escritorio Mesa3D predeterminado cuando GLonD3D12 no está disponible o no se carga. Está disponible para x86 y x64 como parte del paquete OpenGL de Mesa3D Desktop opengl32.dll
o libgallium_wgl.dll
si este último está disponible. Cuando no sea el controlador predeterminado, selecciónelo configurando la variable de entorno GALLIUM_DRIVER=llvmpipe
.
softpipe es una implementación de referencia de un renderizador de software OpenGL de escritorio sin centrarse en el rendimiento de los juegos. Está disponible para x86 y x64 como parte del paquete OpenGL de Mesa3D Desktop opengl32.dll
o libgallium_wgl.dll
si este último está disponible. Selecciónelo estableciendo la variable de entorno GALLIUM_DRIVER=softpipe
.
GLonD3D12. Está disponible para x86 y x64 en el paquete MSVC y desde 22.2.0 en el paquete MinGW, así como parte del paquete OpenGL de Mesa3D Desktop opengl32.dll
o libgallium_wgl.dll
si este último está disponible y antes de 22.3.0 como openglon12.dll
independiente. también. Además de requerir oficialmente Windows 10 v10.0.19041.488 o posterior, también depende de DirectX IL para la redistribución: dxil.dll
para cargar, que se puede instalar mediante herramientas de implementación. Cuando esté disponible y si se puede cargar, este es el controlador OpenGL de escritorio Mesa3D predeterminado en sistemas acelerados por GPU D3D12. Este controlador introducido en 21.0.0 funciona como contenedor que devuelve llamadas API D3D12. Debido a esta naturaleza, puede utilizar la aceleración de GPU. Si no está seleccionado de forma predeterminada, puede probarlo con el renderizador de software Direct3D WARP integrado en Windows configurando las variables de entorno GALLIUM_DRIVER=d3d12
y LIBGL_ALWAYS_SOFTWARE=1
. La copia independiente no necesita configurar GALLIUM_DRIVER=d3d12
y solo se puede instalar a través de una herramienta de implementación en todo el sistema. El paquete independiente GLonD3D12 y Mesa3D Desktop OpenGL se reemplazan entre sí cuando se utiliza la herramienta de implementación en todo el sistema, pero puede revertirlo en cualquier momento.
zinc. Este controlador introducido en el paquete MinGW en 21.0.0 y el paquete MSVC en 21.2.0 está disponible para x86 y x64 como parte del paquete OpenGL de Mesa3D Desktop opengl32.dll
o libgallium_wgl.dll
si este último está disponible. De manera similar a GLonD3D12, funciona como contenedor que devuelve llamadas a la API de Vulkan. Debido a esta naturaleza, utiliza la aceleración de GPU de forma predeterminada, pero también admite la renderización por software. Selecciónelo mediante la variable de entorno GALLIUM_DRIVER=zink
, pero tenga en cuenta que requiere al menos 1 dispositivo Vulkan y un cargador/tiempo de ejecución de Vulkan para inicializarse. zink ignoró los dispositivos de tipo CPU Vulkan de forma predeterminada hasta la versión 22.1.0. Hoy en día utiliza un sistema de prioridad que selecciona automáticamente un dispositivo tipo CPU Vulkan si no existe un dispositivo tipo Vulkan de mayor prioridad. Puede probar zink con dispositivos tipo CPU Vulkan solo configurando LIBGL_ALWAYS_SOFTWARE=1
(Mesa 22.1.0 y posteriores) o ZINK_USE_LAVAPIPE=true
(obsoleto en Mesa 22.1.0).
sr. Este controlador ya no está disponible en Mesa 22.0 y versiones posteriores. Nombres de archivos: swrAVX.dll
, swrAVX2.dll
, swrSKX.dll
, swrKNL.dll
. Aunque reside fuera del paquete OpenGL de Mesa3D Desktop opengl32.dll
o libgallium_wgl.dll
si este último está disponible, todavía depende de ello. Este controlador de renderizado de software OpenGL de escritorio alternativo desarrollado por Intel está optimizado para software de visualización. Está disponible en el paquete MSVC y desde 20.1.7 también en el paquete MinGW. Solo es compatible con x64, x86 no es oficialmente compatible. Actualmente hay 4 DLL y solo se carga uno en función de lo que puede hacer la CPU del usuario. Puede cambiar a swr configurando el valor de la variable de entorno GALLIUM_DRIVER en swr.
osmesa. Nombre del archivo: osmesa.dll
. Disponible tanto para x86 como para x64. Este controlador se utiliza en casos especiales mediante software diseñado para utilizar código Mesa para renderizar sin ningún tipo de sistema de ventanas o dependencia del sistema operativo. Desde el 21.0.0 solo quedó el galio osmesa. Es compatible con OpenGL 3.x y posteriores. Desde 20.0.2, la integración de osmesa con controladores GLLES independientes está disponible en paquetes MSVC y MSYS2 Mingw-w64 que requieren libglapi.dll
en el proceso.
Biblioteca EGL. Nombre del archivo: libEGL.dll
. Biblioteca Mesa3D EGL utilizada por los controladores OpenGL ES. Esto debutó en 21.3.0 y está disponible para aplicaciones de 32 y 64 bits en paquetes MSVC y MSYS2. Depende del paquete OpenGL de escritorio opengl32.dll
o libgallium_wgl.dll
si este último está disponible.
Controladores independientes OpenGL ES. Nombres de archivos: libGLESv1_CM.dll
y libGLESv2.dll
. Controladores independientes OpenGL ES 1.x, 2.x y 3.x disponibles para aplicaciones de 32 y 64 bits. Desde 20.0.2 están disponibles en paquetes MSVC y MSYS2 Mingw-w64. Dependen de la biblioteca Mesa3D EGL si está disponible y del paquete OpenGL de escritorio opengl32.dll
o libgallium_wgl.dll
si este último está disponible.
El controlador de CPU lavapipe Vulkan está disponible en paquetes MSVC y MinGW desde 21.1.0. Nombres de archivos: lvp_icd.x86_64.json
, lvp_icd.x86.json
, vulkan_lvp.dll
. Tenga en cuenta que algunos programas pueden ignorar los dispositivos tipo CPU Vulkan a propósito. Para obtener información sobre cómo implementar, consulte las notas de uso.
La docena de controladores Vulkan de Microsoft está disponible desde 22.1.0 en el paquete MSVC y desde 22.2.0 también en el paquete MinGW. Este controlador depende de la API D3D12 para funcionar y puede usar aceleración de GPU en sistemas compatibles. Nombres de archivos: dzn_icd.x86_64.json
, dzn_icd.x86.json
, vulkan_dzn.dll
. Para obtener información sobre cómo implementar, consulte las notas de uso.
El controlador Vulkan para gráficos AMD (radv) ya no está disponible desde 22.1.0 según la sugerencia de @zmike, ya que no funcionará pronto. RADV estaba disponible en paquetes MSVC y MinGW desde 21.2.0. El binario de 32 bits estaba disponible desde Mesa 22.0. Nombres de archivos: radeon_icd.x86_64.json
, radeon_icd.x86.json
, libvulkan_radeon.dll
y vulkan_radeon.dll
. Para obtener información sobre cómo implementar, consulte las notas de uso.
Pila de Microsoft OpenCL. Nombres de archivo: clon12compiler.dll
(compilador), openclon12.dll
(ICD) y WinPixEventRuntime.dll
(dependencia solo x64). Estos componentes introducidos en 21.0.0 finalmente los proporciona mesa-dist-win desde 21.3.0 (solo compilador) y 21.3.6-2 respectivamente. El controlador CLonD3D12 está disponible como ICD OpenCL. Para obtener información sobre cómo implementar, consulte las notas de uso. CLonD3D12 requiere oficialmente Windows 10 v10.0.19041.488 o posterior y depende de DirectX IL para la redistribución: dxil.dll
para cargar, que se puede instalar mediante herramientas de implementación. CLonD3D12 funciona como contenedor que devuelve llamadas a la API de D3D12. Debido a esta naturaleza, puede usar la aceleración de GPU D3D12 si está disponible; de lo contrario, se usa el procesamiento del software WARP integrado de Windows. Cuando se usaba WARP, CLonD3D12 solía anunciar CL_DEVICE_TYPE_GPU, pero esto cambió en 23.0.0 a CL_DEVICE_TYPE_CPU, consulte microsoft/OpenCLOn12#19. Algunos programas ignoran los controladores con CL_DEVICE_TYPE_CPU configurados específicamente. El comportamiento anterior a 23.0.0 se puede restaurar desde Mesa 24.0.3 estableciendo el valor de la variable de entorno CLON12_WARP_IS_HARDWARE
en 1.
La pila Clover OpenCL se eliminó del paquete de lanzamiento en 22.1.1 hasta que finalice el soporte de Windows, ya que actualmente no se puede utilizar. Nombres de archivo: MesaOpenCL.dll
(ICD), OpenCL.dll
(tiempo de ejecución independiente) y pipe_swrast.dll
(cargador de tuberías). El tiempo de ejecución se puede implementar con la herramienta de implementación por aplicación desde 21.3.7 o en versiones anteriores mediante copiar y pegar junto con todos los cargadores de tuberías disponibles de los que depende. Mientras se implementa, el tiempo de ejecución oculta todos los demás ICD OpenCL presentes en el sistema y solo permite que el software use Mesa3D clover como único controlador OpenCL. Para obtener información sobre cómo implementar el ICD, consulte las notas de uso.
El renderizador de software D3D10 está disponible en el paquete MSVC desde 21.2.0. Nombre del archivo: d3d10sw.dll
. Este es un reemplazo directo de Microsoft WARP y desafortunadamente no existe una forma limpia de implementarlo.
La herramienta y biblioteca SPIR-V a DXIL están disponibles en el paquete MSVC desde 21.0.0 y desde 22.2.0 también en el paquete MinGW. Nombres de archivo: libspirv_to_dxil.dll
, spirv_to_dxil.dll
y spirv2dxil.exe
.
Controlador VA-API D3D12. Nombres de archivo: vaon12_drv_video.dll
. Este controlador estuvo disponible en 22.3.0. Al igual que GLonD3D12, CLonD3D12 y docenas, este es un controlador en capas que se ejecuta sobre la API Direct3D 12 para que pueda usar la aceleración de GPU si está disponible. Microsoft ha documentado las instrucciones de implementación. La herramienta de implementación por aplicación se ha actualizado para ayudar en este proceso.
Interfaz cruda de galio. Este componente obsoleto se eliminó en Mesa3D 22.3.0. Nombres de archivos: graw.dll
, graw_null.dll
. Este es un controlador de galio ficticio sin ninguna API de gráficos que se utiliza principalmente para pruebas. Disponible para x86 y x64 y en versiones completa (con soporte para sistema de ventanas) y sin cabeza (sin ventanas). Desde 20.0.2, las versiones con y sin ventana están disponibles en los paquetes MSVC y MSYS2 Mingw-w64.
conjunto de pruebas. Muchas pruebas unitarias ejecutables.
Los encabezados y bibliotecas para compilaciones de 32 y 64 bits se encuentran en un archivo separado llamado paquete de desarrollo.
A partir de 22.2.0, están disponibles un paquete de información de depuración de MSVC que contiene símbolos de depuración en formato PDB y un paquete de compilación optimizado para depuración habilitado de MinGW. Los archivos binarios de depuración de MinGW se pueden utilizar como reemplazos directos de sus homólogos de versión. Con el software que utiliza la implementación por aplicación, esto debería ser fluido, pero para la implementación en todo el sistema, es necesaria una nueva implementación para pasar de la versión a la depuración y viceversa. Para obtener más información sobre la depuración de MinGW, consulte debug/mingw-start-debugging.sh
Las instrucciones de compilación, si desea replicar mis compilaciones, están disponibles aquí.
Primero elija entre el paquete Mingw y MSVC. Consulte la sección Diferencias entre los paquetes MSVC y MinGW para obtener más detalles. Antes de extraer el paquete de lanzamiento, cierre todos los programas que utilicen Mesa, si alguno se está ejecutando. Después de la extracción, tendrá acceso a 2 opciones de implementación, ambas ubicadas en el directorio donde instaló Mesa. Ambas utilidades de implementación tienen un mecanismo de reinicio para que pueda realizar todas las implementaciones que necesita en una sola sesión. Las herramientas de implementación solo admiten los componentes OpenGL y OpenGL ES de Mesa3D más OpenCL clover independiente.
Una herramienta de implementación en todo el sistema. Si bien está destinado a sistemas que carecen de soporte OpenGL acelerado por hardware, como máquinas virtuales en entornos de nube, también se puede usar en cualquier sistema Windows para reemplazar el software de la bandeja de entrada que representa el controlador OpenGL 1.1, extendiendo el soporte OpenGL para casos de uso en los que OpenGL acelerado por hardware no está disponible, como conexiones RDP. . Debido a posibles problemas con las máquinas virtuales Virtualbox que ejecutan Windows, se recomienda deshabilitar la aceleración 3D en dichas máquinas virtuales si el controlador OpenGL de escritorio Mesa3D está instalado dentro de ellas usando la herramienta de implementación para todo el sistema, consulte el punto 9.
Una herramienta de implementación por aplicación, utilizada para implementar Mesa3D para un solo programa, independientemente de si la compatibilidad con OpenGL acelerado por hardware está presente o no. Los cambios en la utilidad de implementación por aplicación son persistentes y se mantienen durante las actualizaciones y reinstalaciones. La utilidad de implementación por aplicación le ayuda a ahorrar almacenamiento y facilita las cosas, ya que no tendrá que copiar manualmente las DLL del directorio de instalación de Mesa, ya que crea enlaces simbólicos a los controladores de Mesa que opte por utilizar. Este comportamiento garantiza que todos los programas que utilizan Mesa utilicen la misma versión actualizada. La utilidad de implementación por aplicación solicita la ruta al directorio que contiene el ejecutable de la aplicación, el nombre del archivo ejecutable de la aplicación (opcional, puede permanecer en blanco, pero si se especifica puede obligar a algunos programas a usar Mesa3D cuando de otro modo no lo harían), si la aplicación es de 64 bits o 32 bits y los controladores que necesitas. Las aplicaciones de 32 bits tienen sus nombres marcados en el Administrador de tareas mientras se ejecutan. La mayoría de las aplicaciones utilizarán Mesa independientemente de las capacidades de la GPU, pero algunas aplicaciones pueden ser lo suficientemente inteligentes como para cargar OpenGL únicamente desde el directorio del sistema. Al proporcionar el nombre del archivo de la aplicación, se genera un archivo .local en un intento de forzar a la aplicación a utilizar Mesa3D cuando no lo desea. Además, el Mesainjector de Federico Dossena también se puede utilizar para solucionar este problema. Instrucciones de compilación para Mesainjector.
Las aplicaciones antiguas de principios de 200x y anteriores pueden necesitar el conjunto de variables de entorno MESA_EXTENSION_MAX_YEAR; consulte la sección de compatibilidad de software heredado.
Las aplicaciones que requieren OpenGL 3.2 o posterior pueden necesitar anulación de la configuración del contexto OpenGL.
Aquí se encuentran disponibles ejemplos sobre la anulación de la configuración del contexto OpenGL, el cambio a otro controlador y la compatibilidad de aplicaciones antiguas.
La documentación oficial de Mesa3D está disponible aquí.
La implementación de OpenCL ICD se realiza mediante el registro del archivo ICD con el tiempo de ejecución de OpenCL del sistema (por ejemplo, opencl.dll
de Windowssystem32
). Si no tiene el tiempo de ejecución OpenCL del sistema, puede obtenerlo instalando el tiempo de ejecución de CPU Intel OpenCL. También funciona para CPU AMD.
La implementación de los controladores Vulkan se realiza a través del tiempo de ejecución de Vulkan utilizando el método de descubrimiento ICD. Tenga en cuenta que el tiempo de ejecución de Vulkan viene con controladores de gráficos compatibles con Vulkan, por lo que puede que no sea necesario instalarlo manualmente.
Ejecute la implementación en todo el sistema y realice la operación de desinstalación si está disponible, luego salga;
Descargue y ejecute la herramienta Everything (cualquier versión debería funcionar);
Ejecute la herramienta de implementación por aplicación y déjela en ejecución;
En la herramienta Everything, en el campo de texto debajo del menú, ingrese libgallium_wgl.dll attrib:L
y mantenga la herramienta Everything en ejecución;
Para cada resultado de búsqueda en la herramienta Todo:
abra su ubicación en el Explorador de Windows a través de la opción del menú contextual Abrir ruta o Abrir ubicación de archivo;
busque archivos *.local y elimínelos, pero solo si está seguro de haber especificado un nombre de archivo durante la implementación en esa ubicación;
copie la ubicación de la barra de direcciones y envíela a la herramienta de implementación de cada aplicación;
envíe no a todas las implementaciones hasta que se le solicite que realice más implementaciones, envíe sí allí.
Repita los pasos 4 y 5 usando los nombres de archivo osmesa.dll y graw.dll respectivamente, de la misma manera que se hizo con libgallium_wgl.dll;
Cierre por implementación de aplicaciones y herramientas Everything;
Revierta cualquier cambio en el registro y cualquier variable de entorno que configure el tiempo de ejecución de Vulkan para usar cualquiera de los controladores Mesa3D Vulkan; consulte las notas de uso para obtener pistas sobre los posibles cambios que puede tener que revertir;
Repita el paso 8, pero para OpenCL.
ADVERTENCIA: Los programas para los cuales ciertos archivos han sido sobrescritos por la herramienta de implementación de aplicaciones pueden necesitar reinstalación/reparación. La herramienta de implementación por aplicación detecta y advierte sobre este escenario de implementación desde 22.0.0.
Las aplicaciones antiguas de principios de 200x y anteriores pueden necesitar la variable de entorno MESA_EXTENSION_MAX_YEAR configurada para evitar desbordamientos del búfer. Espera un número de año como valor, siendo el más comúnmente utilizado 2001. Recorta la lista de extensiones devuelta por Mesa3D a las extensiones publicadas hasta el año proporcionado inclusive, ya que la lista de extensiones de Mesa3D está ordenada por año.
Ej: set MESA_EXTENSION_MAX_YEAR=2001
. Consulte Cómo configurar variables de entorno.
Con el lanzamiento de OpenGL 3.1, muchas funciones marcadas como obsoletas en OpenGL 3.0 se han eliminado y, desde el lanzamiento de OpenGL 3.2, esta rama de la especificación OpenGL se conoce como perfil central de OpenGL. También en OpenGL 3.3 se introdujo una nueva rama de la especificación OpenGL conocida como contexto compatible con versiones anteriores que elimina las características obsoletas de OpenGL 3.0 que no se eliminaron en OpenGL 3.1. La mayoría de los controladores propietarios implementaron las exenciones de estos cambios ofrecidas en forma de extensión GL_ARB_compatibility para OpenGL 3.1 y contextos de compatibilidad para OpenGL 3.2 y superiores. Debido a la complejidad y especialmente a la falta de pruebas de implementación correctas para GL_ARB_compatibility y contextos de compatibilidad, los desarrolladores de Mesa3D optaron por retrasar el trabajo en esta área hasta que Mesa 18.1 introdujo el soporte GL_ARB_compatibility y luego Mesa 21.3 pasó el soporte de contextos de compatibilidad a OpenGL 4.5 para llvmpipe. En conclusión, los programas que soliciten contexto de compatibilidad con OpenGL no superarán OpenGL 3.0 para Mesa 18.0, 3.1 para Mesa 18.1 y 4.5 para Mesa 21.3 y posteriores. Desafortunadamente, este tipo de programas prevalecen en Windows, donde los desarrolladores tienden a evitar el uso de indicadores de contexto requeridos por el perfil principal. Afortunadamente, Mesa3D proporciona un mecanismo para anular el contexto OpenGL solicitado. Hay 2 variables de entorno que anulan la configuración del contexto OpenGL:
MESA_GL_VERSION_OVERRIDE
Se utiliza para especificar la versión y el tipo de contexto OpenGL. Espera un valor en el siguiente formato.
OpenGLMajorVersion.OpenGLMinorVersion{FC|COMPAT].
FC significa un contexto compatible con versiones posteriores. COMPAT significa un contexto de compatibilidad para OpenGL 3.2 y versiones posteriores y GL_ARB_compatibility habilitado para OpenGL 3.1. La ausencia de cualquier cadena después del número de versión significa que el tipo de contexto predeterminado de Mesa3D para la versión de OpenGL especificada es el siguiente: características obsoletas habilitadas para OpenGL 3.0, GL_ARB_compatibility habilitada para OpenGL 3.1 desde Mesa 18.1 y perfil central para OpenGL 3.2 y superior. Ejemplos: 3.3FC significa contexto compatible con OpenGL 3.3, 3.1COMPAT significa OpenGL 3.1 con GL_ARB_compatibility, 3.2 significa perfil central de OpenGL 3.2. El valor predeterminado para el controlador llvmpipe es 4.5COMPAT para Mesa>=21.3, 3.1COMPAT para Mesa>=18.1 y 3.0COMPAT para Mesa<=18.0.
Una característica muy importante que proporciona esta variable es la posibilidad de configurar un contexto OpenGL incompleto. Los programas solo pueden solicitar hasta el contexto OpenGL más alto con la certificación Khronos completa del controlador Mesa3D en uso. Actualmente, llvmpipe está certificado para OpenGL 4.5 en todos los perfiles OpenGL. Actualmente, swr y GLonD3D12 están certificados para OpenGL 3.3 en perfil central/contexto compatible con versiones posteriores y 3.1 en perfil de compatibilidad. La compatibilidad con zink OpenGL depende del controlador Vulkan subyacente. Desde Mesa 17.3 se reconocen los valores destinados a OpenGL 4.6.
MESA_GLSL_VERSION_OVERRIDE
Se utiliza para especificar la versión del idioma de sombreado. Los valores admitidos son números de versión convertidos a números enteros: 110, 120, 130, 140. 150, 330, 400, 410, 420, 430, 440, 450 y 460. El valor 460 solo se reconoce desde Mesa 17.3. El valor 130, por ejemplo, coincide con GLSL 1.30. Siempre es una buena idea mantener sincronizadas el contexto OpenGL y las versiones del lenguaje de sombreado para evitar confusión en los programas, lo que puede provocar fallas o fallos. Esto puede suceder porque la mayoría de las aplicaciones dependen del comportamiento de los controladores propietarios de tener versiones OpenGL y GLSL sincronizadas. Aquí está la tabla de correlación OpenGL - GLSL. Valores predeterminados para llvmpipe: 450 para Mesa 21.3, 140 para Mesa 18.1 y 130 para Mesa 18.0 si MESA_GL_VERSION_OVERRIDE no está definido o coincide con el perfil principal en caso contrario.
En Windows, la forma más sencilla de configurar variables de entorno es escribiendo archivos por lotes. Lo más probable es que tengas que hacerlo:
para cada aplicación que requiera versiones de OpenGL y GLSL superiores a las expuestas por el controlador Mesa3D seleccionado de forma predeterminada;
si desea seleccionar un controlador no predeterminado para OpenGL de escritorio;
si necesita recortar la lista de extensiones para compatibilidad con programas antiguos.
Simplemente abra el Bloc de notas, escriba el script por lotes. Al guardar, finalice el nombre del archivo con .bat o .cmd, cambie guardar como tipo a todos los archivos y cambie la ubicación para guardar a donde se encuentra el ejecutable de la aplicación. Si tiene alguna habilidad con scripts por lotes, puede cambiar el directorio actual durante la ejecución del script usando el comando CD, lo que abre la posibilidad de guardar el script en cualquier lugar que desee, como se muestra en los ejemplos de rpcs3 y GPU Caps Viewer. La documentación de la mayoría de las variables de entorno utilizadas por Mesa está disponible aquí. Ejemplos completos están disponibles aquí.
Puede configurar múltiples variables de entorno en el mismo script por lotes para combinar la funcionalidad proporcionada por Mesa3D.