GLFW VS mesa

Compare GLFW vs mesa and see what are their differences.

GLFW

A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input (by glfw)

mesa

Mesa 3D graphics library (read-only mirror of https://gitlab.freedesktop.org/mesa/mesa/) (by Mesa3D)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
GLFW mesa
78 39
12,172 1,155
1.6% -
9.3 9.8
8 days ago 3 months ago
C C
zlib License -
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

GLFW

Posts with mentions or reviews of GLFW. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-16.
  • macOS 14.4 causes JVM crashes
    2 projects | news.ycombinator.com | 16 Mar 2024
    Minecraft runs on various Javas.

    And there's a known issue with an interaction between minecraft, Java, and the video drivers that crashes out and it can be traced back all the way to here: https://github.com/glfw/glfw/issues/1997

    It's not fixed.

  • Technical Considerations for GUI Toolkits [Discussion]
    1 project | /r/compsci | 11 Dec 2023
    Window context manager - glfw, sdl
    2 projects | /r/learnprogramming | 11 Dec 2023
    Types of tools for creating a gui (and how those tools approximately work): 1. Utilize the native _graphical interface API_, and depending on the platform, they have specific layers to interface: * Wayland, X11, for Linux * [GDI](https://learn.microsoft.com/en-us/windows/win32/gdi/windows-gdi) for windows * [Quartz](https://en.wikipedia.org/wiki/Quartz\_(graphics\_layer)) for macOS Example - GTK uses [wayland](https://gitlab.gnome.org/GNOME/gtk/-/blob/main/docs/reference/gdk/wayland.md) ([source code](https://gitlab.gnome.org/GNOME/gtk/-/tree/main/gdk/win32)) [X11](https://gitlab.gnome.org/GNOME/gtk/-/blob/main/docs/reference/gdk/x11.md) ([source code](https://gitlab.gnome.org/GNOME/gtk/-/tree/main/gdk/x11)) GDI ([source code](https://gitlab.gnome.org/GNOME/gtk/-/tree/main/gdk/win32)) Quartz ([source code](https://gitlab.gnome.org/GNOME/gtk/-/tree/main/gdk/macos)) [How to use wayland display server](https://bugaevc.gitbooks.io/writing-wayland-clients/content/black-square/the-wayland-client-library.html) (TODO missing "animation" section) 2. Utilize opengl _or other low level graphics api's_ with window context, use GPU to render widgets * Window context manager - [glfw](https://github.com/glfw/glfw), [sdl](https://www.libsdl.org/) * contexts and surfaces, reading input, handling events Example: ImGui, NanoVG, Nuklear, raylib Why? Mainly used for game development, but also good for gui's. _(i haven't seen any examples that uses this method that are used for developing general-use graphical user interfaces.)_
  • How to set-up GLFW 3.3.8 with C++ visual studio community 2022?
    1 project | /r/gamedev | 10 Dec 2023
  • Exploring Computer Graphics: Weekly Chronicle #1
    5 projects | dev.to | 16 Oct 2023
    GLFW: A library for window creation and managing user input.
  • New Vulkan Documentation Website
    10 projects | news.ycombinator.com | 11 Oct 2023
    Not SDL2, but GLFW has something like that under the tests/ directory:

    https://github.com/glfw/glfw/blob/master/tests/triangle-vulk...

  • LWJGL = SFML vs Allegro vs SDL vs Ogre vs ???
    2 projects | /r/opengl | 5 Jul 2023
    I'm not familiar with LWJGL, my 5 seconds on their website makes me think you might be looking for something like GLFW https://www.glfw.org/ to handle I/O and window creation/management.
  • I have spent two whole work days trying to install GLEW
    6 projects | /r/GraphicsProgramming | 3 Jul 2023
    Consider GLFW3 for windowing and GLAD for function loading. I've used this combination myself successfully. Granted, that is "two things" you need, but OTOH it'll work well.
  • OpenGL (GLFW and GLAD) not linking with cmake
    2 projects | /r/cmake | 30 May 2023
    There is a pattern to it which is usable with every GitHub repository. For example, GLFW v3.3.8 can be fetched from: https://github.com/glfw/glfw/archive/refs/tags/3.3.8.tar.gz
  • Help
    1 project | /r/cpp_questions | 24 May 2023
    That is a static or import library for glfw. You need add the path to the directory where this file is located to the "library directories", see: https://www.learncpp.com/cpp-tutorial/a2-using-libraries-with-visual-studio-2005-express/

mesa

Posts with mentions or reviews of mesa. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-06.
  • Been thinking of switching to linux but I am a noob
    8 projects | /r/linux_gaming | 6 Dec 2023
    No problems, AMD Adrenalin it's a part of Windows AMD drivers, but on Linux you have not this soft, here is link: https://github.com/Mesa3D/mesa
  • I need help to upgrade the C++ source code of the panfrost driver on the ARM Chromebook from 1.1 to 1.2
    1 project | /r/cpp_questions | 19 Oct 2023
    # apt install libxcb-glx0-dev libx11-xcb-dev libxcb-present-dev libxshmfence-dev libxxf86vm-dev # git clone https://gitlab.freedesktop.org/mesa/mesa # cd mesa meson setup build/ -Dgallium-drivers=lima,panfrost,kmsro,swrast -Dplatforms=x11 -Dvulkan-drivers= -Dllvm=disabled The Meson build system Version: 1.0.1 Source dir: /Dati/mesa Build dir: /Dati/mesa/build Build type: native build Project name: mesa Project version: 23.3.0-devel C compiler for the host machine: cc (gcc 12.2.0 "cc (Debian 12.2.0-14) 12.2.0") C linker for the host machine: cc ld.bfd 2.40 C++ compiler for the host machine: c++ (gcc 12.2.0 "c++ (Debian 12.2.0-14) 12.2.0") C++ linker for the host machine: c++ ld.bfd 2.40 Host machine cpu family: arm Host machine cpu: armv7l Checking if "-mtls-dialect=gnu2" runs: YES Dependency vdpau skipped: feature gallium-vdpau disabled Program glslangValidator found: NO Dependency libva skipped: feature gallium-va disabled Program python3 found: YES (/usr/bin/python3) Fetching value of define "ETIME" : 62 Checking for function "bswap32" : YES Checking for function "bswap64" : YES Checking for function "clz" : YES Checking for function "clzll" : YES Checking for function "ctz" : YES Checking for function "expect" : YES Checking for function "ffs" : YES Checking for function "ffsll" : YES Checking for function "popcount" : YES Checking for function "popcountll" : YES Checking for function "unreachable" : YES Checking for function "types_compatible_p" : YES Compiler for C supports function attribute const: YES Compiler for C supports function attribute flatten: YES Compiler for C supports function attribute malloc: YES Compiler for C supports function attribute pure: YES Compiler for C supports function attribute unused: YES Compiler for C supports function attribute warn_unused_result: YES Compiler for C supports function attribute weak: YES Compiler for C supports function attribute format: YES Compiler for C supports function attribute packed: YES Compiler for C supports function attribute returns_nonnull: YES Compiler for C supports function attribute alias: YES Compiler for C supports function attribute noreturn: YES Compiler for C supports function attribute visibility:hidden: YES Checking if "__uint128_t" compiles: NO Checking for function "reallocarray" : YES Checking for function "fmemopen" : YES Checking if "gc-sections" : links: YES Compiler for C supports arguments -Werror=implicit-function-declaration: YES Compiler for C supports arguments -Werror=missing-prototypes: YES Compiler for C supports arguments -Werror=return-type: YES Compiler for C supports arguments -Werror=empty-body: YES Compiler for C supports arguments -Werror=incompatible-pointer-types: YES Compiler for C supports arguments -Werror=int-conversion: YES Compiler for C supports arguments -Wimplicit-fallthrough: YES Compiler for C supports arguments -Wmisleading-indentation: YES Compiler for C supports arguments -Wno-missing-field-initializers: YES Compiler for C supports arguments -Wno-format-truncation: YES Compiler for C supports arguments -Wno-nonnull-compare: YES Compiler for C supports arguments -fno-math-errno: YES Compiler for C supports arguments -fno-trapping-math: YES Compiler for C supports arguments -Qunused-arguments: NO Compiler for C supports arguments -fno-common: YES Compiler for C supports arguments -Wno-microsoft-enum-value: NO Compiler for C supports arguments -Wno-unused-function: YES Compiler for C supports arguments -Werror=format: YES Compiler for C supports arguments -Wformat-security: YES Compiler for C supports arguments -Werror=thread-safety: NO Compiler for C supports arguments -ffunction-sections: YES Compiler for C supports arguments -fdata-sections: YES Compiler for C++ supports arguments -Werror=return-type: YES Compiler for C++ supports arguments -Werror=empty-body: YES Compiler for C++ supports arguments -Wmisleading-indentation: YES Compiler for C++ supports arguments -Wno-non-virtual-dtor: YES Compiler for C++ supports arguments -Wno-missing-field-initializers: YES Compiler for C++ supports arguments -Wno-format-truncation: YES Compiler for C++ supports arguments -fno-math-errno: YES Compiler for C++ supports arguments -fno-trapping-math: YES Compiler for C++ supports arguments -Qunused-arguments: NO Compiler for C++ supports arguments -flifetime-dse=1: YES Compiler for C++ supports arguments -Wno-microsoft-enum-value: NO Compiler for C++ supports arguments -Werror=format: YES Compiler for C++ supports arguments -Wformat-security: YES Compiler for C++ supports arguments -ffunction-sections: YES Compiler for C++ supports arguments -fdata-sections: YES Compiler for C supports arguments -Wno-override-init: YES Compiler for C supports arguments -Wno-initializer-overrides: NO Compiler for C supports arguments -Werror=pointer-arith: YES Compiler for C supports arguments -Werror=vla: YES Compiler for C supports arguments -Werror=gnu-empty-initializer: NO Compiler for C++ supports arguments -Werror=pointer-arith: YES Compiler for C++ supports arguments -Werror=vla: YES Compiler for C++ supports arguments -Werror=gnu-empty-initializer: NO Checking for function "__builtin_ia32_clflushopt" : NO Checking if "GCC atomic builtins" compiles: YES Checking if "GCC atomic builtins required -latomic" : links: YES Checking if "GCC 64bit atomics" with dependency : links: YES Library ws2_32 found: NO Header "sys/sysmacros.h" has symbol "major" : YES Header "sys/sysmacros.h" has symbol "minor" : YES Header "sys/sysmacros.h" has symbol "makedev" : YES Header "sys/mkdev.h" has symbol "major" : NO Check usable header "sched.h" : YES Checking for function "sched_getaffinity" : YES Check usable header "xlocale.h" : NO Check usable header "linux/futex.h" : YES Check usable header "endian.h" : YES Check usable header "dlfcn.h" : YES Check usable header "sys/shm.h" : YES Check usable header "cet.h" : NO Check usable header "pthread_np.h" : NO Check usable header "renderdoc_app.h" : NO Check usable header "sys/inotify.h" : YES Checking for function "strtof" : YES Checking for function "mkostemp" : YES Checking for function "memfd_create" : YES Checking for function "random_r" : YES Checking for function "flock" : YES Checking for function "strtok_r" : YES Checking for function "getrandom" : YES Checking for function "qsort_s" : NO Checking for function "posix_fallocate" : YES Checking if "GNU qsort_r" : links: YES Header "time.h" has symbol "struct timespec" : YES Checking for function "thrd_create" : YES Header "errno.h" has symbol "program_invocation_name" : YES Header "math.h" has symbol "issignaling" : YES Checking for function "posix_memalign" : YES Checking whether type "struct dirent" has member "d_type" : YES Checking if "strtod has locale support" : links: YES Checking if "Bsymbolic" : links: YES Checking if "version-script" : links: YES Checking if "dynamic-list" : links: YES Compiler for C supports link arguments -Wl,--build-id=sha1: YES Checking for function "dlopen" : YES Checking for function "dladdr" with dependency : YES Checking for function "dl_iterate_phdr" : YES Checking for function "clock_gettime" : YES Found pkg-config: /usr/bin/pkg-config (1.8.1) Run-time dependency zlib found: YES 1.2.13 Run-time dependency libzstd found: YES 1.5.4 Run-time dependency threads found: YES Checking for function "pthread_setaffinity_np" with dependency threads: YES Run-time dependency expat found: YES 2.5.0 Library m found: YES Run-time dependency libdrm found: YES 2.4.114 Run-time dependency libudev found: YES 251 Run-time dependency libelf found: YES 0.188 Run-time dependency valgrind found: NO (tried pkgconfig) Program bison found: YES (/usr/bin/bison) Program bison found: YES 3.8.2 (/usr/bin/bison) Program flex found: YES (/usr/bin/flex) Run-time dependency libunwind found: YES 1.6.2 Run-time dependency x11 found: YES 1.8.4 Run-time dependency xext found: YES 1.3.4 Run-time dependency xfixes found: YES 6.0.0 Run-time dependency xcb-glx found: YES 1.15 Run-time dependency xcb-shm found: YES 1.15 Run-time dependency xcb found: YES 1.15 Found CMake: /usr/bin/cmake (3.25.1) Run-time dependency xcb-keysyms found: NO (tried pkgconfig and cmake) Run-time dependency x11-xcb found: YES 1.8.4 Run-time dependency xcb-dri2 found: YES 1.15 Run-time dependency xcb-dri3 found: YES 1.15 Run-time dependency xcb-present found: YES 1.15 Dependency xcb-shm found: YES 1.15 (cached) Run-time dependency xcb-sync found: YES 1.15 Run-time dependency xshmfence found: YES 1.3 Run-time dependency glproto found: YES 1.4.17 Run-time dependency dri2proto found: YES 2.8 Run-time dependency xxf86vm found: YES 1.1.4 Run-time dependency xcb-xfixes found: YES 1.15 Run-time dependency xcb-randr found: YES 1.15 Run-time dependency xrandr found: YES 1.5.2 Library sensors found: NO Program nm found: YES (/usr/bin/nm) Program symbols-check.py found: YES (/usr/bin/python3 /Dati/mesa/bin/symbols- check.py) Program install_megadrivers.py found: YES (/usr/bin/python3 /Dati/mesa /bin/install_megadrivers.py) Program decode.py found: YES (/Dati/mesa/src/compiler/isaspec/decode.py) Program encode.py found: YES (/Dati/mesa/src/compiler/isaspec/encode.py) Program ln found: YES (/bin/ln) Checking for function "mincore" : YES Build targets in project: 214 mesa 23.3.0-devel Directories prefix : /usr/local libdir : lib/arm-linux-gnueabihf includedir : include Common C and C++ arguments c_cpp_args : -mtls-dialect=gnu2 OpenGL OpenGL : YES ES1 : YES ES2 : YES Shared glapi : YES GLVND : NO DRI Platform : drm Driver dir : /usr/local/lib/arm-linux-gnueabihf/dri GLX Enabled : YES Provider : dri EGL Enabled : YES Drivers : builtin:egl_dri2 builtin:egl_dri3 Platforms : x11 surfaceless drm xcb GBM Enabled : YES Backends path : /usr/local/lib/arm-linux-gnueabihf/gbm Vulkan Drivers : NO Video Codecs : NO APIs : NO LLVM Enabled : NO Gallium Enabled : YES Drivers : lima panfrost kmsro swrast Platforms : x11 surfaceless drm xcb Frontends : mesa Off-screen rendering (OSMesa): NO HUD lm-sensors : NO Perfetto Enabled : NO User defined options gallium-drivers : lima,panfrost,kmsro,swrast llvm : disabled platforms : x11 vulkan-drivers : Found ninja-1.11.1 at /usr/bin/ninja
  • PRoot-Distro Ubuntu : Adreno 7xx GPU series Freedreno Turnip install
    2 projects | /r/termux | 1 Aug 2023
    $ echo "deb-src [signed-by="/usr/share/keyrings/ubuntu-archive-keyring.gpg"] http://ports.ubuntu.com/ubuntu-ports jammy main restricted universe multiverse" >> /etc/apt/sources.list $ sudo apt update $ sudo apt build-dep mesa $ clone https://gitlab.freedesktop.org/mesa/mesa $ cd mesa $ meson build -Dgbm=enabled -Dopengl=true -Degl=enabled -Degl-native-platform=x11 -Dgles1=disabled -Dgles2=enabled -Ddri3=enabled -Dglx=dri -Dllvm=enabled -Dshared-llvm=disabled -Dplatforms=x11,wayland -Dgallium-drivers=swrast,virgl,zink -Dvulkan-drivers=swrast -Dosmesa=true -Dglvnd=true -Dxmlconfig=disabled $ sudo ninja -C build install
  • using aur helpers like pamac and paru result in issues with downloading and building mesa-git
    2 projects | /r/archlinux | 23 May 2023
  • unfair advantage
    1 project | /r/pcmasterrace | 10 Mar 2023
    Basically there's this one driver for all intel/amd gpus (https://gitlab.freedesktop.org/mesa/mesa) and NVIDIA decided to make their own barely working driver (full of bugs) and also try to make their own standards & protocols instead of using the ones intel/amd have already created
  • Exploring Rust for Vulkan drivers, part 1
    1 project | news.ycombinator.com | 2 Feb 2023
    For the curious (I was), I believe this is the associated commit: https://github.com/Mesa3D/mesa/commit/f2e535e4fed5bdc13e11a4...
  • I have used Linux for a year and a half. My temporary usage of Windows has cemented a newfound perspective for me
    1 project | /r/StallmanWasRight | 15 Jan 2023
    So you're running Mesa 23 by compiling the code at https://gitlab.freedesktop.org/mesa/mesa/ then?
  • Should I switch to Fedora from PopOS?
    1 project | /r/linuxquestions | 13 Jan 2023
  • Does the RX 6700s not have Linux drivers? can't find any
    1 project | /r/linux_gaming | 6 Jan 2023
    no it uses amdgpu driver which is build into / part of the kernel (device drivers), and you can use 2 userspace graphics drivers, one being mesa the other one being amdvlk
  • how do i implement vulkan on my driver
    2 projects | /r/vulkan | 28 Dec 2022
    Good luck, check out https://gitlab.freedesktop.org/mesa/mesa and https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm?h=v6.2-rc1 this is for Linux, but I don't believe that the size of that project, would be different for windows.

What are some alternatives?

When comparing GLFW and mesa you can also consider the following projects:

SDL - Simple Directmedia Layer

AMDVLK - AMD Open Source Driver For Vulkan

bgfx - Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.

com.valvesoftware.Steam

glad - Multi-Language Vulkan/GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs.

vulkan-test - Test if your system supports Vulkan

Skia - Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

steam-runtime - A runtime environment for Steam applications

OpenSceneGraph - OpenSceneGraph git repository

open-gpu-kernel-modules - NVIDIA Linux open GPU kernel module source

Ogre 3D - scene-oriented, flexible 3D engine (C++, Python, C#, Java)

macOS-Simple-KVM - Tools to set up a quick macOS VM in QEMU, accelerated by KVM.