Post

Fallos con WSL en creación de proyectos O3DE MINIMAL, DEFAULT Y ROS2

Fallos WSL2 y Vulkan

La semana anterior tuve problemas para crear un proyecto de O3DE, debido a que no renderizaba escenarios.

Durante esta semana estuve analizando de donde provenía el fallo, primero comprobando que glxinfo(Información del renderizado por OpenGL) mostrara mi gráfica. En un principio no se mostraba, solo llvmpipe(renderizador software de la CPU), estuve investigando como poder hacer que se detecte mi gráfica y acabe en este foro. En el foro se explica que hay que exportar el GALLIUM_DRIVER con d3d12 y después exportar SA_D3D12_DEFAULT_ADAPTER_NAME con NVIDIA, de esta manera ya me aparecia mi grafica, pero no ayudo en nada debido a que O3DE solo utiliza Vulkan para renderizado y comprobé que al hacer vulkaninfo –sumary solo salia llvmpipe y un error en la creación, el cual es el siguiente:

1
2
3
ERROR: [Loader Message] Code 0 : loader_scanned_icd_add: Could not 
get 'vkCreateInstance' via 'vk_icdGetInstanceProcAddr' for ICD 
libGLX_nvidia.so.0

Por lo que a partir de este punto ya sabía que el error se encontraba en Vulkan.

Para O3DE de Linux se necesita tener una GPU que soporte Vulkan, en mi caso si la tenía(NVIDIA GTX 1060 3GB), el problema es que, por alguna razón, la creación de la instancia del ICD libGLX_nvidia.so.0(el necesario para NVIDIA) en WSL falla, estuve explorando la causa durante un par de días, descubriendo que Vulkan no funciona bien en WSL2 gracias a páginas como: Issues microsoft wslg Vulkan, Issues microsoft wsl Vulkan o Vulkan Fails to Detect NVIDIA GPU on WSL2.

A partir de aquí probé dos cosas más:

  • Probar a crear el proyecto O3DE en docker: Descargar lo necesario para que funcione NVIDIA en un contenedor docker y desplegar el contenedor con la GPU.
  • Probar a crear el proyecto O3DE en docker: Descargar un driver experimental llamado dozen que es capaz de hacer que Vulkan detecte DX12(d3d12) y se pueda usar la grafica, ya que DX12 si funciona en WSL2.

Para docker me descargue lo necesario siguiendo la guia para descargar nvidia-container-toolkit, probe a forzar usar la grafica con –rhi=vulkan, –gpusall–, –device /dev/dri, indicar con etiquetas las librerías donde se encuentra Vulkan para que use Vulkan…, pero fue el mismo resultado que con WSL2.

En cuanto al segunda prueba a realizar, descargue los drivers de nvidia desde un repositorio ppa, para tener la versión más nueva posible y así obtuve el driver. En este caso, vulkaninfo –sumary ya si detectaba mi GPU correctamente, pero al ser experimental, fallaba por un problema con un buffer interno.

La única solución que se llegó es particionar el disco e instalar Linux nativo, al hacer esto se arregló el problema.

Creación proyectos O3DE MINIMAL, DEFAULT Y ROS 2

Una vez ya porfin arreglado el problema de Vulkan, fue tan simple como seguir la guia para crear un proyecto desde el Proyect Manager.

Y creando así el primer proyecto DEFAULT(MINIMAL es igual que DEFAULT pero tiene menos GEMS predeterminadas).

Editor desplegado del proyecto DEFAULT

Luego, al lograr ya desplegar el Editor con proyectos básicos me centré en desplegar O3DE con ROS2, como lo tenía planeado la semana anterior. Para eso primero me descargue la versión más reciente de ROS para O3DE, ROS Jazzy. Y luego ya solo fue descargar GEMS para ROS2 en O3DE e instalar dependencias manualmente que necesitaba el proyecto de O3DE ROS2, una vez resuelto los problemas de construcción, no hubo problemas para desplegar el editor.

Editor desplegado del proyecto O3DE ROS2

Información básica de los proyectos de O3DE

Los días que estuve con el problema de Vulkan y WSL también aproveche para ir informandome sobre contenido general de los proyectos de O3DE, a partir de la serie de videos que tiene subido el equipo de O3DE sobre tutorial para hacer un juego de ping pong, donde enseñan las herramientas básicas para la creación de juegos en O3DE.

This post is licensed under CC BY 4.0 by the author.

Trending Tags