Skip to content

Would this repo support Adreno 8xx GPUs? #2

Description

@RyougiShiki-214

This repo is absolutely fantastic, anyway I'm not sure wether this repo works for Adreno 8xx GPUs, since there were only Adreno 6xx/7xx GPUs mentioned in README.md

Activity

  1. lfdevs commented on Oct 17, 2025

    @lfdevs
    Owner

    Not yet, because there's not any patches to support Adreno 8xx from upstream or other open-source repositories for now. But I will keep an eye on any news about patches which may come someday.

  2. nightshadecf commented on Oct 25, 2025

    @nightshadecf

    hello I found this reddit thread with mesa wrapper for snapdragon elite
    https://www.reddit.com/r/termux/comments/1gmnf7s/qualcomm_drivers_its_here/

    I test the driver and it works with termux native. Can you bring support to chroot and proot?
    Thank you

  3. lfdevs commented on Oct 25, 2025

    @lfdevs
    Owner

    hello I found this reddit thread with mesa wrapper for snapdragon elite https://www.reddit.com/r/termux/comments/1gmnf7s/qualcomm_drivers_its_here/

    I test the driver and it works with termux native. Can you bring support to chroot and proot? Thank you

    This driver supports Proot, Chroot and LXC containers simultaneously. You need to configure the container to mount the system’s /dev and share Termux’s ${TMPDIR}:

    • For Proot containers, add the --shared-tmp argument when running the proot-distro command.
    • For Chroot containers, you can refer to the following commands:
      sudo busybox mount --bind ${PREFIX}/tmp ${CHROOT_ROOTFS_PATH}/tmp
      sudo busybox mount --bind /dev ${CHROOT_ROOTFS_PATH}/dev
    • For LXC containers, you can try the following configuration snippet:
      # Mount Termux tmp
      lxc.hook.pre-start = bash -c "mkdir -p '${LXC_ROOTFS_PATH}/tmp' 2>/dev/null; umount '${LXC_ROOTFS_PATH}/tmp' 2>/dev/null; mount --bind '/data/data/com.termux/files/usr/tmp' '${LXC_ROOTFS_PATH}/tmp'; true;"
      # Allow cgroup access to devices
      # (Note: Be sure to replace with your actual device numbers!)
      # kgsl-3d0 (e.g., 506:0)
      lxc.cgroup.devices.allow = c 506:0 rwm
      # DRM renderD128 (e.g., 226:128)
      lxc.cgroup.devices.allow = c 226:128 rwm
      # DRM card0 (e.g., 226:0)
      lxc.cgroup.devices.allow = c 226:0 rwm
      # ION (e.g., 10:127)
      lxc.cgroup.devices.allow = c 10:127 rwm
      # Create and bind device nodes inside the container
      lxc.mount.entry = /dev/kgsl-3d0 dev/kgsl-3d0 none bind,optional,create=file
      lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
      lxc.mount.entry = /dev/ion dev/ion none bind,optional,create=file
  4. nightshadecf commented on Oct 26, 2025

    @nightshadecf

    Thanks for your detailed instruction.
    One thing I noticed is that when I installed the driver, glmark2 no longer works albeit vkmark2 got accelerated and used gpu. Does that mean this driver is only for vulkan?
    Any proper to rollback the driver? Last time I tried to delete those files, my x11 got broken.

    And is there any ways for firefox to use gpu and accelerate 1. webgl and 2. hardware decode like youtube?
    Right now when I launch firefox from console it just saying not detect any gpu.
    and it only happens why this new wrapper driver is installed. Does this mean firefox only use opengl?

    Log from firefox

    Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: ManageChildProcess failed
     (t=0.430778) [GFX1-]: glxtest: ManageChildProcess failed
    
    Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: ManageChildProcess failed
     (t=0.430778) |[1][GFX1-]: No GPUs detected via PCI
     (t=0.430778) [GFX1-]: No GPUs detected via PCI
    
    
  5. lfdevs commented on Oct 26, 2025

    @lfdevs
    Owner

    One thing I noticed is that when I installed the driver, glmark2 no longer works albeit vkmark2 got accelerated and used gpu. Does that mean this driver is only for vulkan?

    What is your GPU model? So far, I have only tested the mesa-25.3.0-devel-20250725 driver on the following two devices, with the results shown below:

    Device Model SoC GPU glmark2 glmark2-es2 vkmark
    Redmi K40 Pro M2012K11G Qualcomm Snapdragon 888 Adreno 660 842 771 1170
    Xiaomi Pad 6 Pro 23046RP50C Qualcomm Snapdragon 8+ Gen 1 Adreno 730 1169 1143 Not working

    If only Vulkan is working, you can use Zink to translate OpenGL API calls into Vulkan API calls. Try changing the MESA_LOADER_DRIVER_OVERRIDE environment variable, for example:
    MESA_LOADER_DRIVER_OVERRIDE=zink TU_DEBUG=noconform glmark2

    I will strive to build a more compatible version in the next release.

    Any proper to rollback the driver?

    You can try manually deleting all files extracted from the archive, then reinstall the main Mesa drivers using the package manager. For example, on Debian, run the following command:

    sudo apt install -y --reinstall libgl1-mesa-dri libglx-mesa0 mesa-vulkan-drivers mesa-va-drivers mesa-vdpau-drivers

    Does this mean firefox only use opengl?

    Currently, I have only successfully enabled WebGL hardware acceleration in the Chromium browser; hardware-accelerated video decoding is not supported. However, due to the lack of vertical sync support and other issues, severe screen tearing occurs. You can refer to the screenshots below:

    Image

  6. nightshadecf commented on Oct 26, 2025

    @nightshadecf

    Wow, that's amazing and a lot of information to digest. I will test more and report back in.
    So far I haven't got the driver to work with chroot ( I have mount bind 2 folder like you said ), is there anyway to install directly instead of being shared from termux?. Lots to learn, will dig more.
    On Termux I can get roughly 8000fps with vkmark ( Cpu is elite 8 gen 4, adreno 830 ) using the qualcomm driver I said earlier.
    Your result with Chrome is atonishing already, although getting firefox to work is much better as from my experience firefox is much more performant. Can you post your test result in chrome for webgl aquarium (default setting 500 fish)?

    This is not related to gpu driver, but this is my finding with software renderding

    Device: Oneplus Pad 3
    Gpu: andreno 830
    Cpu: snap elite 8 gen 4
    Webgl is tested using webgl aquarium default setting 500
    Decode testing using youtube 1080p
    Firefox v144.0

    Environment HW Accel (software) Firefox (webgl) Chrome (webgl) Firefox decode Chrome decode
    Chroot LLVM 15.0.6 OpenGL ES 3.2 Mesa 22.3.6 24 fps 11 fps little frame drop very choppy many dropped frames
    Termux LLVM 21.1.3 OpenGL ES 3.2 Mesa 25.2.5 6 fps N/A very smooth very choppy, slower than chroot

    In conclusion, in a non HW accel env, chroot with firefox has the best performance so far
    But youtube playback on firefox (termux) is very very smooth, better than chroot version, and I cannot explain why, any ideas?

    The difference for webgl performance maybe because of different software driver version (but chroot has lower version while better performance?)

    Another test with Vscode

    Environment Edition Result
    Chroot Vscode Laggy, usable but noticable lag
    Termux Code - Oss Perfectly smooth, no issues

    Again very bizzare result, both vscode and code - oss is the same version (commit 7d842fb85a0275a4a8e4d7e040d2625abbf7f084).
    Exactly the same software, same electron renderer but different behaviour.

    Again I have zero experience if drivers and gpu on android, can you investigate this matter, can there be related to x11 packages?
    Thanks

  7. lfdevs commented on Oct 27, 2025

    @lfdevs
    Owner

    Cpu is elite 8 gen 4, adreno 830

    In fact, the Freedreno driver (Mesa’s driver for Adreno GPUs, supporting OpenGL, OpenGL ES, and Vulkan) currently does not support Adreno 8xx series GPUs. This is likely the root cause of the “Vulkan-only” issue you encountered. You are probably using Android’s native GPU driver (which only supports OpenGL ES and Vulkan) for hardware acceleration—see this package in the termux-packages repository. This may also explain why, in some scenarios, Termux Native containers outperform Chroot containers in terms of graphics performance.

    I haven’t yet tested hardware acceleration in Chroot containers using Android’s native drivers, but I plan to experiment with it in the future.

    Is there anyway to install directly instead of being shared from termux?

    Theoretically, if your GPU is an Adreno 6xx/7xx series, rendering occurs directly through /dev/kgsl-3d0, and the rendered frames are then delivered to the termux-x11 display server via shared Unix sockets. In other words, as long as you continue using Termux:X11 for display output, Termux remains essential—it acts as a crucial bridge.

    Can you post your test result in chrome for webgl aquarium (default setting 500 fish)?

    Of course. On the Adreno 730, frame rates typically range between 50–55 FPS.

    Image

    In conclusion, in a non HW accel env, chroot with firefox has the best performance so far But youtube playback on firefox (termux) is very very smooth, better than chroot version, and I cannot explain why, any ideas?
    Again very bizzare result, both vscode and code - oss is the same version (commit 7d842fb85a0275a4a8e4d7e040d2625abbf7f084). Exactly the same software, same electron renderer but different behaviour.

    Software rendering performance depends on many factors and can sometimes be hard to explain. For example, on modern multi-core CPUs, LLVMpipe is generally considered faster than XRender (both are software renderers). However, in the specific environment of “Termux container + Termux:X11,” when running the same version of KDE Plasma 5, XRender significantly outperforms LLVMpipe. With LLVMpipe, you often need to disable KWin’s compositor effects just to achieve basic usability, whereas with XRender, the compositor runs smoothly with effects enabled.

  8. nightshadecf commented on Oct 28, 2025

    @nightshadecf

    So the driver provided in this repo is Mesa Freereno driver and it doesn't support andreno 8x just yet right?

    You are probably using Android’s native GPU driver (which only supports OpenGL ES and Vulkan) for hardware acceleration

    Yes, I'm using native driver. So there is a few questions

    1. If vkmark can use the driver, why chrome doesn't recognize it and use vulkan to hw accel?
    2. Does Zink work with native driver or only work with Freereno driver?
    3. Can we do translate layer from OpenGL ES to Open GL for apps that use opengl use the driver (Firefox in this case) ?

    Of course. On the Adreno 730, frame rates typically range between 50–55 FPS.

    I get around 50-60fps on a virgl android generic driver on snap 8 elite, usable for now. Before with llvmpipe is like 20-24fps. But apps like glmark2 is way slower, 300+fps (llvm) vs 100 fps (virpipe). Odd?

    Software rendering performance depends on many factors and can sometimes be hard to explain. For example, on modern multi-core CPUs, LLVMpipe is generally considered faster than XRender (both are software renderers). However, in the specific environment of “Termux container + Termux:X11,” when running the same version of KDE Plasma 5, XRender significantly outperforms LLVMpipe. With LLVMpipe, you often need to disable KWin’s compositor effects just to achieve basic usability, whereas with XRender, the compositor runs smoothly with effects enabled.

    Agree, and I suspect it has something to do with how termux dev has rebuild those app for termux env, maybe they tweak and optimize something, because termux 2d render seems to outperform chroot in my case.

    I haven’t yet tested hardware acceleration in Chroot containers using Android’s native drivers, but I plan to experiment with it in the future.

    Please please do it, as of right now I have no idea how to incorporate those drive inside chroot.
    Also it seems like there are drivers extracted from gamehub that are usable in other emulator apps like Eden for Winlator.... What exactly is those drivers, how does it work?
    Example gamehub driver: https://github.com/zoerakk/qualcomm-adreno-driver

  9. lfdevs commented on Oct 29, 2025

    @lfdevs
    Owner

    So the driver provided in this repo is Mesa Freereno driver and it doesn't support andreno 8x just yet right?

    Yes, and so far I haven’t found any Freedreno patches that support Adreno 8xx GPUs—possibly because Qualcomm introduced a new GPU architecture starting with the Snapdragon 8 Elite, making it extremely difficult for open-source community developers to adapt.

    1. Does Zink work with native driver or only work with Freereno driver?
    2. Can we do translate layer from OpenGL ES to Open GL for apps that use opengl use the driver (Firefox in this case) ?

    Android’s native drivers can also work with Zink. Since Zink is a translation layer that converts OpenGL calls into Vulkan, and Vulkan itself remains unaffected by Zink, you can use Zink directly.

    Also it seems like there are drivers extracted from gamehub that are usable in other emulator apps like Eden for Winlator.... What exactly is those drivers, how does it work?

    These native Android drivers are Qualcomm’s proprietary drivers, preinstalled on Qualcomm-based devices. However, apps like GameHub may provide newer versions than those shipped with the device.

    As for other issues, I’ll need more extensive testing, which could take considerable time. In the meantime, you might find some useful insights in this PR, which includes discussions about Firefox hardware acceleration. Although it’s based on Termux Native containers, it may still offer helpful references.

  10. nightshadecf commented on Oct 29, 2025

    @nightshadecf

    That cleared up quite a lot, thanks

    As for other issues, I’ll need more extensive testing, which could take considerable time. In the meantime, you might find some useful insights in termux/termux-packages#26528, which includes discussions about Firefox hardware acceleration. Although it’s based on Termux Native containers, it may still offer helpful references.

    Will dig into this too

    Android’s native drivers can also work with Zink. Since Zink is a translation layer that converts OpenGL calls into Vulkan, and Vulkan itself remains unaffected by Zink, you can use Zink directly.

    I haven't successfully achieved this (in termux) although the native vulkan driver running fine with vkmark.
    When I tried Zink it showed this in firefox and glmark2

    u0_a357@localhost ~/s/s/termux> MESA_LOADER_DRIVER_OVERRIDE=zink TU_DEBUG=noconform firefox

    Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: ManageChildProcess failed
     (t=0.248721) [GFX1-]: glxtest: ManageChildProcess failed
    
    Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: ManageChildProcess failed
     (t=0.248721) |[1][GFX1-]: No GPUs detected via PCI
     (t=0.248721) [GFX1-]: No GPUs detected via PCI
    

    u0_a357@localhost ~/s/s/termux> MESA_LOADER_DRIVER_OVERRIDE=zink TU_DEBUG=noconform glmark2

    fish: Job 1, 'MESA_LOADER_DRIVER_OVERRIDE=zin…' terminated by signal SIGSEGV (Address boundary error)
    

    Please help me run this native driver with zink.

  11. lfdevs commented on Nov 8, 2025

    @lfdevs
    Owner

    Please help me run this native driver with zink.

    After extensive build attempts and testing, I’ve confirmed that the vulkan-wrapper-android package works very well for enabling hardware acceleration via Android’s Vulkan driver on Adreno 830 GPUs within a Termux native container. You can give it a try:
    lfdevs/termux-packages#1 (comment)

  12. shiumano commented on Nov 10, 2025

    @shiumano

    I can't shake the feeling this discussion is heading in a strange direction, so I'd like to interject briefly.

    First, unless a miracle happens, 8xx GPU support will not be provided.
    We're just reciting a 17,350,585-character spell created by a genius, casting magic without understanding a thing.

    That aside, I have a few other things I'd like to mention.

    vulkan-wrapper-android cannot be used in Linux containers (proot or chroot). This is simply because it was not created for Linux, but for the Android OS.

    In Firefox, setting gfx.webrender.all to true via about:config enables GPU rendering for the entire webpage, not just WebGL. However, using wrapper and Zink with my Adreno 740 causes severe artifacts.

    ... Image (This is Firefox. Trust me.)

    But since wrapper compatibility varies by device, I wonder how it would work. I don't know.

    For Chromium, you can enable Vulkan rendering using --use-angle=vulkan. Have you tried it?

  13. nightshadecf commented on Nov 11, 2025

    @nightshadecf

    After extensive build attempts and testing, I’ve confirmed that the vulkan-wrapper-android package works very well for enabling hardware acceleration via Android’s Vulkan driver on Adreno 830 GPUs within a Termux native container. You can give it a try: lfdevs/termux-packages#1 (comment)

    Wow this driver work straight away without any hassle at all, I dont even need to include MESA_LOADER_DRIVER_OVERRIDE=zink. Everything just load correctly, Firefox can recognize gpu and utilize it, which is great. Thank you for pointing out 💃

    First, unless a miracle happens, 8xx GPU support will not be provided.
    We're just reciting a 17,350,585-character spell created by a genius, casting magic without understanding a thing.

    That is sad, this gpu is really powerful

    vulkan-wrapper-android cannot be used in Linux containers (proot or chroot). This is simply because it was not created for Linux, but for the Android OS.

    Yes right now is not, but I dont see any reason it can't be, maybe when the author decided to implement it

    In Firefox, setting gfx.webrender.all to true via about:config enables GPU rendering for the entire webpage, not just WebGL. However, using wrapper and Zink with my Adreno 740 causes severe artifacts.
    But since wrapper compatibility varies by device, I wonder how it would work. I don't know.
    For Chromium, you can enable Vulkan rendering using --use-angle=vulkan. Have you tried it?

    Firefox crashed instantly when I tried to enable that flag. Since zink is usable right now, it is not necessary anymore.
    Regarding chrome, I'm not successful in getting running in vulkan, do I need to install any packages?. It was firing this error
    8811:8811:1111/083405.318028:ERROR:./../src/ui/gl/angle_platform_impl.cc:42] vk_renderer.cpp:187 (VerifyExtensionsPresent): Extension not supported: VK_KHR_surface

    Thanks for joining the conversation, at least we have some progress going on here. Cheers

  14. lfdevs commented on Nov 13, 2025

    @lfdevs
    Owner

    First, unless a miracle happens, 8xx GPU support will not be provided. We're just reciting a 17,350,585-character spell created by a genius, casting magic without understanding a thing.

    So, as I mentioned in the first comment of my reply to this issue, Freedreno/Turnip currently does not support Adreno 8xx. Qualcomm has adopted a new architecture on Adreno 8xx that hasn't been open-sourced, so reverse-engineering is likely the only path for the open-source community to achieve compatibility—but this could take several years or even longer.

    vulkan-wrapper-android cannot be used in Linux containers (proot or chroot). This is simply because it was not created for Linux, but for the Android OS.

    That’s indeed the case. However, VirPipe (MESA_LOADER_DRIVER_OVERRIDE=zink virgl_test_server_android --angle-vulkan) is still usable. But its performance is extremely poor—I tested glmark2 in a PRoot container on Adreno 830 and scored less than 200 points. Moreover, whether it’s Chromium or Firefox, forcing hardware acceleration results in either full-windows tearing/artifacts or a completely blank screen.

    Perhaps venus would offer better performance, but I haven’t found a way to use it in Termux yet.

    In Firefox, setting gfx.webrender.all to true via about:config enables GPU rendering for the entire webpage, not just WebGL. However, using wrapper and Zink with my Adreno 740 causes severe artifacts.

    But since wrapper compatibility varies by device, I wonder how it would work. I don't know.

    When testing vulkan-wrapper-android on Adreno 730, Zink didn't work at all. Therefore, I had to use the Adreno 830 to test Firefox, setting both layers.acceleration.force-enabled and gfx.webrender.all to true, and launching Firefox with the command: MESA_LOADER_DRIVER_OVERRIDE= firefox. The performance is shown in the screenshots below. There are some image rendering issues, and the WebGL Aquarium test fails with the following error message:

    Firefox screenshots and logs

    Image

    Image

    ~ $ MESA_LOADER_DRIVER_OVERRIDE= firefox
    Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: ManageChildProcess failed
     (t=0.358709) [GFX1-]: glxtest: ManageChildProcess failed
    
    Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: ManageChildProcess failed
     (t=0.358709) |[1][GFX1-]: No GPUs detected via PCI
     (t=0.358709) [GFX1-]: No GPUs detected via PCI
    
    WebGL Aquarium test fails
    It does not appear your computer supports WebGL.
    Click here for more information.
    
    Status: WebGL creation failed: * AllowWebgl2:false restricts context creation on this system. ()
    

    For Chromium, you can enable Vulkan rendering using --use-angle=vulkan. Have you tried it?

    When using the command chromium --use-angle=vulkan on Adreno 830, Chromium falls back to software rendering, as shown in the following log:

    chromium --use-angle=vulkan
    ~ $ chromium-browser --use-angle=vulkan
    [756:756:1112/212246.747106:ERROR:./../src/base/files/file_path_watcher_inotify.cc:923] Failed to read /proc/sys/fs/inotify/max_user_watches                          [755:755:1112/212246.747106:ERROR:./../src/base/files/file_path_watcher_inotify.cc:923] Failed to read /proc/sys/fs/inotify/max_user_watches                          [744:765:1112/212246.757696:ERROR:./../src/base/files/file_path_watcher_inotify.cc:923] Failed to read /proc/sys/fs/inotify/max_user_watches                          [744:766:1112/212246.757706:ERROR:./../src/dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /data/data/com.termux/files/usr/var/run/dbus/system_bus_socket: No such file or directory
    [744:766:1112/212246.986975:ERROR:./../src/dbus/bus.cc:408] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")                                                    [744:766:1112/212246.987087:ERROR:./../src/dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /data/data/com.termux/files/usr/var/run/dbus/system_bus_socket: No such file or directory
    [744:766:1112/212246.987129:ERROR:./../src/dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /data/data/com.termux/files/usr/var/run/dbus/system_bus_socket: No such file or directory                                          [744:767:1112/212246.987179:ERROR:../src/net/base/address_tracker_linux.cc:242] Could not bind NETLINK socket: Permission denied (13)
    [788:788:1112/212247.010920:ERROR:./../src/ui/gl/angle_platform_impl.cc:42] vk_renderer.cpp:187 (VerifyExtensionsPresent): Extension not supported: VK_KHR_surface
    ERR: vk_renderer.cpp:187 (VerifyExtensionsPresent): Extension not supported: VK_KHR_surface
    [788:788:1112/212247.011113:ERROR:./../src/ui/gl/angle_platform_impl.cc:42] vk_renderer.cpp:187 (VerifyExtensionsPresent): Extension not supported: VK_KHR_xcb_surface
    ERR: vk_renderer.cpp:187 (VerifyExtensionsPresent): Extension not supported: VK_KHR_xcb_surface                                                                       [788:788:1112/212247.011287:ERROR:./../src/ui/gl/angle_platform_impl.cc:42] Display.cpp:1093 (initialize): ANGLE Display::initialize error 0: Internal Vulkan error (-7): A requested extension is not supported, in ../../../src/third_party/angle/src/libANGLE/renderer/vulkan/vk_renderer.cpp, enableInstanceExtensions:2252.
    ERR: Display.cpp:1093 (initialize): ANGLE Display::initialize error 0: Internal Vulkan error (-7): A requested extension is not supported, in ../../../src/third_party/angle/src/libANGLE/renderer/vulkan/vk_renderer.cpp, enableInstanceExtensions:2252.
    [788:788:1112/212247.011465:ERROR:./../src/ui/gl/egl_util.cc:92] EGL Driver message (Critical) eglInitialize: Internal Vulkan error (-7): A requested extension is not supported, in ../../../src/third_party/angle/src/libANGLE/renderer/vulkan/vk_renderer.cpp, enableInstanceExtensions:2252.
    [788:788:1112/212247.011562:ERROR:./../src/ui/gl/gl_display.cc:639] eglInitialize Vulkan failed with error EGL_NOT_INITIALIZED
    [788:788:1112/212247.011678:ERROR:./../src/ui/gl/gl_display.cc:674] Initialization of all EGL display types failed.
    [788:788:1112/212247.012365:ERROR:../src/ui/ozone/common/gl_ozone_egl.cc:26] GLDisplayEGL::Initialize failed.
    [788:788:1112/212247.013828:ERROR:./../src/ui/gl/angle_platform_impl.cc:42] vk_renderer.cpp:187 (VerifyExtensionsPresent): Extension not supported: VK_KHR_surface
    ERR: vk_renderer.cpp:187 (VerifyExtensionsPresent): Extension not supported: VK_KHR_surface
    [788:788:1112/212247.013925:ERROR:./../src/ui/gl/angle_platform_impl.cc:42] vk_renderer.cpp:187 (VerifyExtensionsPresent): Extension not supported: VK_KHR_xcb_surface
    ERR: vk_renderer.cpp:187 (VerifyExtensionsPresent): Extension not supported: VK_KHR_xcb_surface
    [788:788:1112/212247.014012:ERROR:./../src/ui/gl/angle_platform_impl.cc:42] Display.cpp:1093 (initialize): ANGLE Display::initialize error 0: Internal Vulkan error (-7): A requested extension is not supported, in ../../../src/third_party/angle/src/libANGLE/renderer/vulkan/vk_renderer.cpp, enableInstanceExtensions:2252.
    ERR: Display.cpp:1093 (initialize): ANGLE Display::initialize error 0: Internal Vulkan error (-7): A requested extension is not supported, in ../../../src/third_party/angle/src/libANGLE/renderer/vulkan/vk_renderer.cpp, enableInstanceExtensions:2252.
    [788:788:1112/212247.014107:ERROR:./../src/ui/gl/egl_util.cc:92] EGL Driver message (Critical) eglInitialize: Internal Vulkan error (-7): A requested extension is not supported, in ../../../src/third_party/angle/src/libANGLE/renderer/vulkan/vk_renderer.cpp, enableInstanceExtensions:2252.
    [788:788:1112/212247.014171:ERROR:./../src/ui/gl/gl_display.cc:639] eglInitialize Vulkan failed with error EGL_NOT_INITIALIZED
    [788:788:1112/212247.014227:ERROR:./../src/ui/gl/gl_display.cc:674] Initialization of all EGL display types failed.
    [788:788:1112/212247.014288:ERROR:../src/ui/ozone/common/gl_ozone_egl.cc:26] GLDisplayEGL::Initialize failed.
    [788:788:1112/212247.015658:ERROR:../src/components/viz/service/main/viz_main_impl.cc:189] Exiting GPU process due to errors during initialization
    

    However, when launching Chromium with either chromium or chromium --use-angle=gles, hardware acceleration is successfully enabled, and performance is noticeably better than Firefox. In the WebGL Aquarium test with 10,000 fish, the former achieves around 11 FPS, while the latter reaches approximately 45 FPS.

    chrome://gpu

    Image

    about-gpu-2025-11-11T07-01-50-119Z.txt


    BTW, how does your Adreno 740 perform with the Freedreno driver in Chromium and Firefox when running the WebGL Aquarium test with 10,000 fish? When I tested on an Adreno 730, I got around 25 FPS in Chromium and 12–15 FPS in Firefox.

  15. hansm629 commented on Dec 1, 2025

    @hansm629

    The good news is that
    the Linux kernel has finally added support for the Adreno 8xx series to Mesa.

    It's possible that Adreno 8xx series support will be implemented in Turnip and Freedreno (kgsl) in the near future.

    https://lore.kernel.org/dri-devel/20250930-kaana-gpu-support-v1-0-73530b0700ed@oss.qualcomm.com/

  16. lfdevs commented on Dec 1, 2025

    @lfdevs
    Owner

    The good news is that the Linux kernel has finally added support for the Adreno 8xx series to Mesa.

    It's possible that Adreno 8xx series support will be implemented in Turnip and Freedreno (kgsl) in the near future.

    https://lore.kernel.org/dri-devel/20250930-kaana-gpu-support-v1-0-73530b0700ed@oss.qualcomm.com/

    It’s great news indeed!

    BTW, Rob Clark (Qualcomm Principle Engineer) is currently working on adding Adreno 8xx GPU support to Freedreno:
    https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38450

    Hoping his work progresses smoothly—and that Lucas Fryzek’s KGSL patches remain effective for Adreno 8xx as well.

  17. hansm629 commented on Dec 1, 2025

    @hansm629

    @lfdevs
    Hello Sir!
    This isn't related to this issue, but I have a question!

    I've always applied the Termux-X11 DRI3 patch and then build Turnip for use...

    Is the Termux-X11 DRI3 patch already applied to the release driver currently distributed through GitHub?

  18. lfdevs commented on Dec 1, 2025

    @lfdevs
    Owner

    @lfdevs Hello Sir! This isn't related to this issue, but I have a question!

    I've always applied the Termux-X11 DRI3 patch and then build Turnip for use...

    Is the Termux-X11 DRI3 patch already applied to the release driver currently distributed through GitHub?

    Yes, I believe the DRI3 patch is already included in @xMeM's original patchset. The output of the following command also confirms this:

    lf@localhost:~$ xdpyinfo | grep DRI
        DRI3
    lf@localhost:~$ LIBGL_DEBUG=verbose glxinfo | grep libgl
    libGL: Can't open configuration file /etc/drirc: No such file or directory.
    libGL: Can't open configuration file /home/lf/.drirc: No such file or directory.
    libGL: Can't open configuration file /etc/drirc: No such file or directory.
    libGL: Can't open configuration file /home/lf/.drirc: No such file or directory.
    MESA-LOADER: failed to retrieve device information
    MESA: error: kgsl_pipe_get_param:103: invalid param id: 13
    libGL: Can't open configuration file /etc/drirc: No such file or directory.
    libGL: Can't open configuration file /home/lf/.drirc: No such file or directory.
    Using DRI3 for screen 0
        GLX_EXT_get_drawable_type, GLX_EXT_libglvnd, GLX_EXT_no_config_context, 
    
  19. lfdevs commented on Dec 15, 2025

    @lfdevs
    Owner

    OpenGL and OpenGL ES support for Adreno 840 is available now: https://github.com/lfdevs/mesa-for-android-container/releases/tag/mesa-26.0.0-devel-20251209
    According to upstream mesa repo, support for Turnip or other models will arrive in the future, too.

  20. added a commit that references this issue on Jan 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions