utensils / docker-opengl

Multi-Arch Docker - Mesa 3D OpenGL Software Rendering (Gallium) - LLVMpipe, and OpenSWR Drivers
MIT License
82 stars 33 forks source link
alpine arm64 armv7 docker docker-container gallium glx linux llvm llvmpipe mesa mesa-3d-opengl mesa-llvm opengl openswr osmesa rendering software-rendering swrast xvfb

Multi-Arch Docker - Mesa 3D OpenGL Software Rendering (Gallium) - LLVMpipe, and OpenSWR Drivers

CircleCI Docker Automated build Docker Pulls Docker Stars

About

Minimal Docker container bundled with the Mesa 3D Gallium Drivers: LLVMpipe & OpenSWR, enabling OpenGL support inside a Docker container without the need for a GPU.

Features

Docker Images

Please note there are images available for Alpine versions 3.10, 3.11 as well. Please see all available tags on DockerHub

Image Description Architectures Base Image
utensils/opengl:latest Latest Mesa version amd64, 386, arm64, arm/v7 alpine:3.12
utensils/opengl:stable Stable Mesa version (Personally Tested) amd64, 386, arm64, arm/v7 alpine:3.12
utensils/opengl:20.0.6 Mesa version 20.0.6 amd64, 386, arm64, arm/v7 alpine:3.12
utensils/opengl:19.0.8 Mesa version 19.0.8 amd64 alpine:3.10
utensils/opengl:18.3.6 Mesa version 18.3.6 amd64 alpine:3.10
utensils/opengl:18.2.8 Mesa version 18.2.8 amd64 alpine:3.10

Building

This image can be built locally using the supplied Makefile

Make default image (stable):

make

Make latest image:

make latest

Make all images:

make all

Usage

This image is intended to be used as a base image to extend from. One good example of this is the Envisaged project which allows for quick and easy Gource visualizations from within a Docker container.

Extending from this image.

FROM utensils/opengl:20.0.6
COPY ./MyAppOpenGLApp /AnywhereMyHeartDesires
RUN apk add --update my-deps...

Environment Variables

The following environment variables are present to modify rendering options.

High level settings

Variable Default Value Description
XVFB_WHD 1920x1080x24 Xvfb demensions and bit depth.
DISPLAY :99 X Display number.
LIBGL_ALWAYS_SOFTWARE 1 Forces Mesa 3D to always use software rendering.
GALLIUM_DRIVER llvmpipe Sets OpenGL Driver llvmpipe, swr, softpipe, and swrast

Lower level settings / tweaks

Variable Default Value Description
LP_NO_RAST false LLVMpipe - If set LLVMpipe will no-op rasterization
LP_DEBUG "" LLVMpipe - A comma-separated list of debug options is accepted
LP_PERF "" LLVMpipe - A comma-separated list of options to selectively no-op various parts of the driver.
LP_NUM_THREADS "" LLVMpipe - An integer indicating how many threads to use for rendering. Zero (0) turns off threading completely. The default value is the number of CPU cores present.