Skip to content

addpkg(main/mesa-vulkan-icd-wrapper): Android Vulkan wrapper - #22500

Open
xMeM wants to merge 1 commit into
termux:masterfrom
xMeM:dev/wrapper
Open

addpkg(main/mesa-vulkan-icd-wrapper): Android Vulkan wrapper#22500
xMeM wants to merge 1 commit into
termux:masterfrom
xMeM:dev/wrapper

Conversation

@xMeM

@xMeM xMeM commented Dec 10, 2024

Copy link
Copy Markdown
Contributor

Wrap the Android system Vulkan library into an ICD and provides X11 platform surface support.

@twaik

twaik commented Dec 10, 2024

Copy link
Copy Markdown
Member

@truboxl @licy183 @sylirre probably this driver can replace vulkan-loader-android and implement default vulkan ICD at the same time. Probably you want to test it a bit more deep.

@twaik

twaik commented Dec 10, 2024

Copy link
Copy Markdown
Member

For some reasons latest termux-x11 falls with segmentation fault if I launch vkcube. Will investigate it.

@Biswa96

Biswa96 commented Dec 10, 2024

Copy link
Copy Markdown
Member

Does this support Adreno 505 GPU? I got the following errors.

$ termux-x11 -xstartup vkcube
Selected WSI platform: xcb
Selected GPU 0: Adreno (TM) 505, type: IntegratedGpu
ERROR(/home/builder/.termux-build/vulkan-wsi-layer/src/wsi/swapchain_base.cpp:323): init_platform(device, swapchain_create_info, use_presentation_thread)
ERROR(/home/builder/.termux-build/vulkan-wsi-layer/src/layer/swapchain_api.cpp:65): Failed to initialise swapchain
23377 killed by signal 11

$ termux-x11 -xstartup vulkaninfo
WARNING: [Loader Message] Code 0 : Layer VK_LAYER_window_system_integration uses API version 1.3 which is older than the application specified API version of 1.4. May cause issues.
...more info...

@xMeM

xMeM commented Dec 10, 2024

Copy link
Copy Markdown
Contributor Author

Uninstall vulkan-wsi-layer , it is no longer needed.

@Biswa96

Biswa96 commented Dec 10, 2024

Copy link
Copy Markdown
Member

Thanks for the hint. Now, vkcube is working but vulkaninfo fails.

$ vulkaninfo
../src/src/vulkan/wsi/wsi_common_x11.c:938: VkResult x11_surface_get_formats2(VkIcdSurfaceBase *, struct wsi_device *, const void *, uint32_t *, VkSurfaceFormat2KHR *): assertion "f->sType == VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR" failed
Aborted

@twaik

twaik commented Dec 10, 2024

Copy link
Copy Markdown
Member

Does not work fine on my device. I get this in X server log.

12-10 12:33:14.825 10980 10992 E [Gralloc-ERROR]: validate_lock_input_parameters:227 Lock is not supported for AFBC enabled buffers. wxh(500 500) Internal Format:0x100000001
12-10 12:33:14.825 10980 10992 W Gralloc2: lock(0x7e50a94500, ...) failed: 7
12-10 12:33:14.825 10980 10992 E LorieNative: DRI3: AHardwareBuffer_lock failed: 7

@xMeM

xMeM commented Dec 10, 2024

Copy link
Copy Markdown
Contributor Author

Thanks for the hint. Now, vkcube is working but vulkaninfo fails.

$ vulkaninfo
../src/src/vulkan/wsi/wsi_common_x11.c:938: VkResult x11_surface_get_formats2(VkIcdSurfaceBase *, struct wsi_device *, const void *, uint32_t *, VkSurfaceFormat2KHR *): assertion "f->sType == VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR" failed
Aborted

This is an issue with vulkan-tools , fixed by KhronosGroup/Vulkan-Tools@2744de9.

@twaik

twaik commented Dec 10, 2024

Copy link
Copy Markdown
Member

Is there any reason why CI built libwayland-protocols and not the actual package? @sylirre ?

@twaik twaik closed this Dec 10, 2024
@twaik twaik reopened this Dec 10, 2024
@sylirre

sylirre commented Dec 10, 2024

Copy link
Copy Markdown
Member

@twaik CI built these packages:

  • libwayland-protocols_1.38_all.deb
  • mesa-vulkan-icd-wrapper_24.3.1-1_aarch64.deb
  • mesa-vulkan-icd-wrapper_24.3.1-1_arm.deb

icd wrapper has TERMUX_PKG_BLACKLISTED_ARCHES="i686, x86_64"

I don't see missing packages.

@twaik

twaik commented Dec 10, 2024

Copy link
Copy Markdown
Member

Oh, I was checking the x86_64 version.
@xMeM is there any reason to make it only arm and arm64?

@xMeM

xMeM commented Dec 10, 2024

Copy link
Copy Markdown
Contributor Author

Not tested on x86_64 devices.

@xMeM

xMeM commented Dec 10, 2024

Copy link
Copy Markdown
Contributor Author

Does not work fine on my device. I get this in X server log.

12-10 12:33:14.825 10980 10992 E [Gralloc-ERROR]: validate_lock_input_parameters:227 Lock is not supported for AFBC enabled buffers. wxh(500 500) Internal Format:0x100000001
12-10 12:33:14.825 10980 10992 W Gralloc2: lock(0x7e50a94500, ...) failed: 7
12-10 12:33:14.825 10980 10992 E LorieNative: DRI3: AHardwareBuffer_lock failed: 7

I changed the Usage of AHardwareBuffer, can you try again?

@twaik

twaik commented Dec 10, 2024

Copy link
Copy Markdown
Member

Unfortunately the package is stripped and debug symbols are disabled so there is no much info.

Selected WSI platform: xlib
Selected GPU 0: Mali-G77, type: IntegratedGpu                                                   
Segmentation fault                                                                              
--------- beginning of crash
12-10 16:32:52.306  9822  9822 F libc    : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), faul
t addr 0xe0 in tid 9822 (vkcube), pid 9822 (vkcube)
--------- beginning of main                                                                     
12-10 16:32:52.324  9831  9831 I crash_dump64: obtaining output fd from tombstoned, type: kDebug
gerdTombstoneProto                                                                              
12-10 16:32:52.326  9831  9831 I crash_dump64: performing dump of process 9822 (target tid = 982
2)                                                                                              
12-10 16:32:52.369  9831  9831 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *
** *** ***                                                                                      
12-10 16:32:52.369  9831  9831 F DEBUG   : Build fingerprint: 'samsung/r8sxx/r8s:13/TP1A.220624.
014/G780FXXSLFXK8:user/release-keys'
12-10 16:32:52.369  9831  9831 F DEBUG   : Revision: '5'                                        
12-10 16:32:52.369  9831  9831 F DEBUG   : ABI: 'arm64'
12-10 16:32:52.369  9831  9831 F DEBUG   : Processor: '4'                                       
12-10 16:32:52.369  9831  9831 F DEBUG   : Timestamp: 2024-12-10 16:32:52.330705687+0200        
12-10 16:32:52.369  9831  9831 F DEBUG   : Process uptime: 1s                                   
12-10 16:32:52.369  9831  9831 F DEBUG   : Cmdline: vkcube                                      
12-10 16:32:52.369  9831  9831 F DEBUG   : pid: 9822, tid: 9822, name: vkcube  >>> vkcube <<<   
12-10 16:32:52.369  9831  9831 F DEBUG   : uid: 10677                                           
12-10 16:32:52.369  9831  9831 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr
 0x00000000000000e0                                                                             
12-10 16:32:52.369  9831  9831 F DEBUG   : Cause: null pointer dereference                      
12-10 16:32:52.369  9831  9831 F DEBUG   :     x0  0000000000000000  x1  00000074a6c02800  x2  0
0000074a9a6a008  x3  000000000000001d                                                           
12-10 16:32:52.369  9831  9831 F DEBUG   :     x4  0000000000000000  x5  0000000000000000  x6  0
000000000000000  x7  7f7f7f7f7f7f7f7f
12-10 16:32:52.369  9831  9831 F DEBUG   :     x8  0a032e85271b5fb7  x9  0a032e85271b5fb7  x10 0
0000074a6c00ae0  x11 00000074a6c01450                                                           
12-10 16:32:52.369  9831  9831 F DEBUG   :     x12 00000074a6c01430  x13 0000000000081708  x14 0
000000000080308  x15 ffffffffffffffff
12-10 16:32:52.369  9831  9831 F DEBUG   :     x16 00000074a71d2a60  x17 00000074a71c227c  x18 0
0000074a9574000  x19 0000007fe2413590
12-10 16:32:52.369  9831  9831 F DEBUG   :     x20 0000005a79ed9180  x21 0000005a79e89f09  x22 0
0000074a6d71754  x23 0000000000000001
12-10 16:32:52.369  9831  9831 F DEBUG   :     x24 0000005a79ed7000  x25 0000000000000000  x26 0
000000000000055  x27 0000007fe2413590                                                           
12-10 16:32:52.369  9831  9831 F DEBUG   :     x28 0000000000000000  x29 0000007fe2414690
12-10 16:32:52.369  9831  9831 F DEBUG   :     lr  0000005a79e9de24  sp  0000007fe24134d0  pc  0
000005a79e9de28  pst 0000000060000000
12-10 16:32:52.369  9831  9831 F DEBUG   : backtrace:                                           
12-10 16:32:52.369  9831  9831 F DEBUG   :   NOTE: Function names and BuildId information is mis
sing for some frames due                                                                        
12-10 16:32:52.369  9831  9831 F DEBUG   :   NOTE: to unreadable libraries. For unwinds of apps,
 only shared libraries
12-10 16:32:52.369  9831  9831 F DEBUG   :   NOTE: found under the lib/ directory are readable.
12-10 16:32:52.369  9831  9831 F DEBUG   :   NOTE: On this device, run setenforce 0 to make the 
libraries readable.
12-10 16:32:52.369  9831  9831 F DEBUG   :   NOTE: Unreadable libraries:
12-10 16:32:52.369  9831  9831 F DEBUG   :   NOTE:   /data/data/com.termux/files/usr/bin/vkcube
12-10 16:32:52.369  9831  9831 F DEBUG   :       #00 pc 000000000001de28  /data/data/com.termux/
files/usr/bin/vkcube
12-10 16:32:52.369  9831  9831 F DEBUG   :       #01 pc 0000000000083198  /apex/com.android.runt
ime/lib64/bionic/libc.so (__libc_init+96) (BuildId: ae97b4676db8ce3f620ba6bf7932eba6)
12-10 16:32:52.376  9831  9831 E crash_dump64: AM data write failed: Broken pipe
~/.../downloads/debs $

@hansm629

Copy link
Copy Markdown

@xMeM
Xclipse 940 GPU : vkmark [clear] flickering issue

vkmark_clear_flickering_issue.mp4

@hansm629

Copy link
Copy Markdown

@xMeM
Adreno 750 GPU : clvk not work Issue

~$ clinfo
[CLVK] Could not initialise any device!

@hansm629

Copy link
Copy Markdown

@xMeM
Could you please make MESA_VK_WSI_DEBUG=nosync environment variable work like it did in the old debug build version?

@Artewar67

Artewar67 commented Dec 10, 2024

Copy link
Copy Markdown

This version (24.3.1) stopped working with all applications except vulkaninfo compared to 24.2.5. I tested all variations of 24.3.1 and none of them works.

Selected WSI platform: xcb
Selected GPU 0: Mali-G76, type: IntegratedGpu
termux :0 -xstartup "vkmark"
7482 killed by signal 11

@paulowesll

Copy link
Copy Markdown

It's working with lasted termux-x11 update

https://github.com/termux/termux-x11/releases/tag/nightly

This version (24.3.1) stopped working with all applications except vulkaninfo compared to 24.2.5. I tested all variations of 24.3.1 and none of them works.

Selected WSI platform: xcb
Selected GPU 0: Mali-G76, type: IntegratedGpu
termux :0 -xstartup "vkmark"
7482 killed by signal 11

@Artewar67

Copy link
Copy Markdown

It's working with lasted termux-x11 update

https://github.com/termux/termux-x11/releases/tag/nightly

Updated termux-x11 and install new version of termux-x11-nightly. Nothing change

@twaik

twaik commented Dec 10, 2024

Copy link
Copy Markdown
Member

I managed to get better crash log

twaik@twaik:~/termux-x11$ adb -s phone:5555 logcat -c; adb -s phone:5555 logcat | ~/Android/Sdk/ndk/28.0.12674087/ndk-stack -i /dev/stdin --sym=/home/twaik/.termux-build/mesa-vulkan-icd-wrapper/build/src/vulkan/wrapper
********** Crash dump: **********
Build fingerprint: 'samsung/r8sxx/r8s:13/TP1A.220624.014/G780FXXSLFXK8:user/release-keys'
#00 0x000000000076dacc /vendor/lib64/egl/libGLES_mali.so (vulkan::image::image_init_info::handle_image_format(gfx::host_mem_allocator&)+216) (BuildId: 6ee02575d06e4ab1887c2e4c9f5e690b)
#01 0x000000000076e46c /vendor/lib64/egl/libGLES_mali.so (vulkan::image::image_init_info::parse_image_info(gfx::host_mem_allocator&, bool, hal::surface_metadata const*)+376) (BuildId: 6ee02575d06e4ab1887c2e4c9f5e690b)
#02 0x000000000076b5b4 /vendor/lib64/egl/libGLES_mali.so (vulkan::image::init(vulkan::device*, VkImageCreateInfo const&, gfx::host_mem_allocator const&, bool, hal::surface_metadata const*, unsigned long const*, unsigned long const*)+276) (BuildId: 6ee02575d06e4ab1887c2e4c9f5e690b)
#03 0x000000000076f8cc /vendor/lib64/egl/libGLES_mali.so (vulkan::image::init_external_common(vulkan::device*, VkImageCreateInfo const&, unsigned long const*, unsigned long const*, gfx::host_mem_allocator const&, bool, hal::surface_metadata const&, int, hal::drm_format_modifier)+272) (BuildId: 6ee02575d06e4ab1887c2e4c9f5e690b)
#04 0x0000000000783960 /vendor/lib64/egl/libGLES_mali.so (vulkan::android_deferred_image_init_and_bind(vulkan::device*, vulkan::image*, vulkan::device_memory*)+612) (BuildId: 6ee02575d06e4ab1887c2e4c9f5e690b)
#05 0x000000000076baf4 /vendor/lib64/egl/libGLES_mali.so (vkBindImageMemory+20) (BuildId: 6ee02575d06e4ab1887c2e4c9f5e690b)
#06 0x00000000001f7f60 /data/data/com.termux/files/usr/lib/libvulkan_wrapper.so
wsi_create_ahardware_buffer_blit_context
/home/twaik/.termux-build/mesa-vulkan-icd-wrapper/build/../src/src/vulkan/wsi/wsi_common.c:2359:13
#07 0x00000000001f4b70 /data/data/com.termux/files/usr/lib/libvulkan_wrapper.so
wsi_create_image
/home/twaik/.termux-build/mesa-vulkan-icd-wrapper/build/../src/src/vulkan/wsi/wsi_common.c:777:13
#08 0x00000000001fce0c /data/data/com.termux/files/usr/lib/libvulkan_wrapper.so
x11_image_init
/home/twaik/.termux-build/mesa-vulkan-icd-wrapper/build/../src/src/vulkan/wsi/wsi_common_x11.c:2073:13
#09 0x00000000001fbb90 /data/data/com.termux/files/usr/lib/libvulkan_wrapper.so
x11_surface_create_swapchain
/home/twaik/.termux-build/mesa-vulkan-icd-wrapper/build/../src/src/vulkan/wsi/wsi_common_x11.c:2791:16
#10 0x00000000001f52e0 /data/data/com.termux/files/usr/lib/libvulkan_wrapper.so
wsi_CreateSwapchainKHR
/home/twaik/.termux-build/mesa-vulkan-icd-wrapper/build/../src/src/vulkan/wsi/wsi_common.c:1058:22
#11 0x000000000007a254 /data/data/com.termux/files/usr/lib/libvulkan.so.1.3.302
#12 0x000000000007c0ec /data/data/com.termux/files/usr/lib/vkmark/xcb.so
#13 0x000000000005c0c4 /data/data/com.termux/files/usr/lib/vkmark/xcb.so
#14 0x00000000000501d4 /data/data/com.termux/files/usr/lib/vkmark/xcb.so
#15 0x00000000000ad458 /data/data/com.termux/files/usr/bin/vkmark
#16 0x0000000000083198 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+96) (BuildId: ae97b4676db8ce3f620ba6bf7932eba6)
Crash dump is completed

********** Crash dump: **********
Build fingerprint: 'samsung/r8sxx/r8s:13/TP1A.220624.014/G780FXXSLFXK8:user/release-keys'
#00 0x000000000076dacc /vendor/lib64/egl/libGLES_mali.so (vulkan::image::image_init_info::handle_image_format(gfx::host_mem_allocator&)+216) (BuildId: 6ee02575d06e4ab1887c2e4c9f5e690b)
#01 0x000000000076e46c /vendor/lib64/egl/libGLES_mali.so (vulkan::image::image_init_info::parse_image_info(gfx::host_mem_allocator&, bool, hal::surface_metadata const*)+376) (BuildId: 6ee02575d06e4ab1887c2e4c9f5e690b)
#02 0x000000000076b5b4 /vendor/lib64/egl/libGLES_mali.so (vulkan::image::init(vulkan::device*, VkImageCreateInfo const&, gfx::host_mem_allocator const&, bool, hal::surface_metadata const*, unsigned long const*, unsigned long const*)+276) (BuildId: 6ee02575d06e4ab1887c2e4c9f5e690b)
#03 0x000000000076f8cc /vendor/lib64/egl/libGLES_mali.so (vulkan::image::init_external_common(vulkan::device*, VkImageCreateInfo const&, unsigned long const*, unsigned long const*, gfx::host_mem_allocator const&, bool, hal::surface_metadata const&, int, hal::drm_format_modifier)+272) (BuildId: 6ee02575d06e4ab1887c2e4c9f5e690b)
#04 0x0000000000783960 /vendor/lib64/egl/libGLES_mali.so (vulkan::android_deferred_image_init_and_bind(vulkan::device*, vulkan::image*, vulkan::device_memory*)+612) (BuildId: 6ee02575d06e4ab1887c2e4c9f5e690b)
#05 0x000000000076baf4 /vendor/lib64/egl/libGLES_mali.so (vkBindImageMemory+20) (BuildId: 6ee02575d06e4ab1887c2e4c9f5e690b)
#06 0x00000000001f7f60 /data/data/com.termux/files/usr/lib/libvulkan_wrapper.so
wsi_create_ahardware_buffer_blit_context
/home/twaik/.termux-build/mesa-vulkan-icd-wrapper/build/../src/src/vulkan/wsi/wsi_common.c:2359:13
#07 0x00000000001f4b70 /data/data/com.termux/files/usr/lib/libvulkan_wrapper.so
wsi_create_image
/home/twaik/.termux-build/mesa-vulkan-icd-wrapper/build/../src/src/vulkan/wsi/wsi_common.c:777:13
#08 0x00000000001fce0c /data/data/com.termux/files/usr/lib/libvulkan_wrapper.so
x11_image_init
/home/twaik/.termux-build/mesa-vulkan-icd-wrapper/build/../src/src/vulkan/wsi/wsi_common_x11.c:2073:13
#09 0x00000000001fbb90 /data/data/com.termux/files/usr/lib/libvulkan_wrapper.so
x11_surface_create_swapchain
/home/twaik/.termux-build/mesa-vulkan-icd-wrapper/build/../src/src/vulkan/wsi/wsi_common_x11.c:2791:16
#10 0x00000000001f52e0 /data/data/com.termux/files/usr/lib/libvulkan_wrapper.so
wsi_CreateSwapchainKHR
/home/twaik/.termux-build/mesa-vulkan-icd-wrapper/build/../src/src/vulkan/wsi/wsi_common.c:1058:22
#11 0x000000000007a254 /data/data/com.termux/files/usr/lib/libvulkan.so.1.3.302
#12 0x000000000001f8ac /data/data/com.termux/files/usr/bin/vkcube
#13 0x000000000001e70c /data/data/com.termux/files/usr/bin/vkcube
#14 0x0000000000083198 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+96) (BuildId: ae97b4676db8ce3f620ba6bf7932eba6)
Crash dump is completed

@paulowesll

Copy link
Copy Markdown

It's working with lasted termux-x11 update
https://github.com/termux/termux-x11/releases/tag/nightly

Updated termux-x11 and install new version of termux-x11-nightly. Nothing change

It's working here with lasted mesa wrapper and lasted termux-x11

~ $ termux-x11 -xstartup vkcube
Selected WSI platform: xcb
Selected GPU 0: Samsung Xclipse 530, type: IntegratedGpu

@twaik

twaik commented Dec 10, 2024

Copy link
Copy Markdown
Member

@xMeM suggestion. Some devices support BGRA format of AHardwareBuffers. It is enough to pass 5 as AHardwareBuffer_Desc::format to make it work. It will work on most devices (works fine in termux-x11), but you can write a runtime check for it (probe for this feature and check for errors?). So you can avoid blitting in this case and improve performance.

@Artewar67

Artewar67 commented Dec 10, 2024

Copy link
Copy Markdown

I also that when running vulkaninfo with termux-x11 this error occurs

~ $ termux-x11 -xstartup "vulkaninfo"
../src/src/vulkan/wsi/wsi_common_x11.c:938: VkResult x11_surface_get_formats2(VkIcdSurfaceBase *, struct wsi_device *, const void *, uint32_t *, VkSurfaceFormat2KHR *): assertion "f->sType == VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR" failed
19564 killed by signal 6

This error also occurs in version 24.2.5 vulkan wrapper

@Xtr126

Xtr126 commented Dec 11, 2024

Copy link
Copy Markdown

Even though the blacklist was removed it does not work on x86_64:

 ~ $ termux-x11 -xstartup vkcube
Selected WSI platform: xcb
12183 killed by signal 11

vulkaninfo and glxgears with zink works fine somehow.

@fish4terrisa-MSDSM

Copy link
Copy Markdown

@xMeM Hello sir A common issue with Adreno GPU has been confirmed in the latest Android 15 & 16. When running vkmark, the shader is broken in the [cube] item.

  • Galaxy S25 Ultra | Android 16 | Adreno 830
  • Galaxy S24 Ultra | Android 15 | Adreno 750
  • Galaxy Tab S9 Ultra | Android 15 | Adreno 740

Screenshot_2025-06-03_13-31-15 Screenshot_20250603_133524_TermuxX11 Screenshot_2025-06-03_13-28-35

This is a common symptom in the above devices.

Interestingly, Galaxy S24+ | Android 15 | Xclipse 940 The symptom does not occur in the above environment. Screenshot_2025-06-03_13-46-01

Can you fix it?

Is this issue fixed for now? The same issues also happened when using the wrapper with qualcomm's glibc vulkan driver

@hansm629

Copy link
Copy Markdown

@fish4terrisa-MSDSM

Sorry for the late reply.

Currently, I'm experiencing the same issue in both vulkan-wrapper-android_25.0.0-2 and bionic-vulkan-wrapper environments.

By the way,
was there an officially distributed glibc driver from Qualcomm?

Or are you saying you loaded the Qualcomm vulkan driver into the glibc environment via libhybris?

@fish4terrisa-MSDSM

fish4terrisa-MSDSM commented Oct 20, 2025

Copy link
Copy Markdown

@fish4terrisa-MSDSM

Sorry for the late reply.

Currently, I'm experiencing the same issue in both vulkan-wrapper-android_25.0.0-2 and bionic-vulkan-wrapper environments.

By the way, was there an officially distributed glibc driver from Qualcomm?

Or are you saying you loaded the Qualcomm vulkan driver into the glibc environment via libhybris?

yes there are
check https://github.com/qualcomm-linux/meta-qcom there are link to the driver in the recipe for the driver
you can use my WIP vulkan wrapper(based on the android one) at here, the flyingfish branch is based on Trass3r/mesa and the pufferfish branch is newer and based on the mesa dev branch.(both of them are working just fine I think)
(you'll need a wayland only version of the driver, a little bit dig of the server qualcomm used to host the driver could give you plenty of drivers. A version linked with qualcomm's own libgbm is usually wayland only and thus suitable. Also even though they are marked for specific driver they usually support all models the codebase support, the only difference is the firmware shipped with the driver)
they are meant for IoT devices but also work with mobile phones and other devices that share the same chip.(like sm8550 devices can use the driver for qcs8550 since they all use the same adreno 740 gpu)
Also the problem might be because shader compile failure. I'm checking eden emulator's code related with qualcomm vulkan gpu driver and I noticed that many features are marked as broken, such as parallel shader compilation(which idk if is disabled in the wrapper and I didnt see any commits related with this issue)

@hansm629

Copy link
Copy Markdown

@fish4terrisa-MSDSM
Excellent!

So, does this mean that I can use the Qualcomm Adreno Vulkan driver in both the Termux native glibc environment and the PRoot-Distro Linux environment through the GitHub source you mentioned?

@fish4terrisa-MSDSM

fish4terrisa-MSDSM commented Oct 20, 2025

Copy link
Copy Markdown

@fish4terrisa-MSDSM Excellent!

So, does this mean that I can use the Qualcomm Adreno Vulkan driver in both the Termux native glibc environment and the PRoot-Distro Linux environment through the GitHub source you mentioned?

never tested in proot or termux glibc, only tested in lxc. Idk if selinux will do something and break the driver... I think it's gonna be working tho, given that with this wrapper it doesnt even use dma_heap, but i'm really not so sure
also btw in that glibc driver qualcomm also provided native opencl driver, which doesnt need any wrapper or any other things. It's confirmed to be working with llama.cpp(tested by myself with olmoe2)

@DienoX

DienoX commented Oct 20, 2025

Copy link
Copy Markdown

Which is currently the best wrapper/design for the Snapdragon Elite?

@lfdevs

lfdevs commented Nov 10, 2025

Copy link
Copy Markdown
Contributor

September 25 2025 vulkan-wrapper-android on-device build guide

Sir, thank you for your guide and patches. After several attempts, I finally successfully built this package. I tested it on three devices, and it worked well on most of them, except that Zink didn't work on Adreno 730. The detailed test results are as follows:

Device Model SoC GPU vkmark glmark2 (Zink) glmark2-es2 (Zink)
REDMI K80 Pro 24122RKC7C Qualcomm Snapdragon 8 Elite Adreno 830 8078 1149 1185
Pixel 6 Pro GLU0G Google Tensor G1 Mali-G78 MP20 1047 441 481
Xiaomi Pad 6 Pro 23046RP50C Qualcomm Snapdragon 8+ Gen 1 Adreno 730 3241 Not working Fallback to llvmpipe

Adreno 830

vkmark
=======================================================
    vkmark 2025.01
=======================================================
    Vendor ID:      0x5143
    Device ID:      0x44050001
    Device Name:    Adreno (TM) 830
    Driver Version: 2150760496
    Device UUID:    64b1fb02435100000000010005440000
=======================================================
[vertex] device-local=true: FPS: 9153 FrameTime: 0.109 ms
[vertex] device-local=false: FPS: 7845 FrameTime: 0.127 ms
[texture] anisotropy=0: FPS: 7919 FrameTime: 0.126 ms
[texture] anisotropy=16: FPS: 7943 FrameTime: 0.126 ms
[shading] shading=gouraud: FPS: 7866 FrameTime: 0.127 ms
[shading] shading=blinn-phong-inf: FPS: 7867 FrameTime: 0.127 ms
[shading] shading=phong: FPS: 7833 FrameTime: 0.128 ms
[shading] shading=cel: FPS: 7868 FrameTime: 0.127 ms
[effect2d] kernel=edge: FPS: 8497 FrameTime: 0.118 ms
[effect2d] kernel=blur: FPS: 7878 FrameTime: 0.127 ms
[desktop] <default>: FPS: 8800 FrameTime: 0.114 ms
[cube] <default>: FPS: 7955 FrameTime: 0.126 ms
[clear] <default>: FPS: 7592 FrameTime: 0.132 ms
=======================================================
                                   vkmark Score: 8078
=======================================================
glmark2 (Zink)
=======================================================
    glmark2 2023.01
=======================================================
    OpenGL Information
    GL_VENDOR:      Mesa
    GL_RENDERER:    zink Vulkan 1.3(Adreno (TM) 830 (QUALCOMM_PROPRIETARY))
    GL_VERSION:     4.6 (Compatibility Profile) Mesa 25.2.5
    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
    Surface Size:   800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 1653 FrameTime: 0.605 ms
[build] use-vbo=true: FPS: 1640 FrameTime: 0.610 ms
[texture] texture-filter=nearest: FPS: 1592 FrameTime: 0.628 ms
[texture] texture-filter=linear: FPS: 1707 FrameTime: 0.586 ms
[texture] texture-filter=mipmap: FPS: 1645 FrameTime: 0.608 ms
[shading] shading=gouraud: FPS: 1462 FrameTime: 0.684 ms
[shading] shading=blinn-phong-inf: FPS: 1453 FrameTime: 0.688 ms
[shading] shading=phong: FPS: 1361 FrameTime: 0.735 ms
[shading] shading=cel: FPS: 1358 FrameTime: 0.737 ms
[bump] bump-render=high-poly: FPS: 1165 FrameTime: 0.859 ms
[bump] bump-render=normals: FPS: 1537 FrameTime: 0.651 ms
[bump] bump-render=height: FPS: 1608 FrameTime: 0.622 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1158 FrameTime: 0.864 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 893 FrameTime: 1.121 ms
[pulsar] light=false:quads=5:texture=false: FPS: 1401 FrameTime: 0.714 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 526 FrameTime: 1.904 ms
[desktop] effect=shadow:windows=4: FPS: 943 FrameTime: 1.061 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 395 FrameTime: 2.535 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 518 FrameTime: 1.932 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 469 FrameTime: 2.137 ms
[ideas] speed=duration: FPS: 591 FrameTime: 1.692 ms
[jellyfish] <default>: FPS: 929 FrameTime: 1.077 ms
[terrain] <default>: FPS: 264 FrameTime: 3.796 ms
[shadow] <default>: FPS: 919 FrameTime: 1.089 ms
[refract] <default>: FPS: 411 FrameTime: 2.437 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1317 FrameTime: 0.760 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1312 FrameTime: 0.762 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1318 FrameTime: 0.759 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 1319 FrameTime: 0.758 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1282 FrameTime: 0.780 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1314 FrameTime: 0.761 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1314 FrameTime: 0.761 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1198 FrameTime: 0.835 ms
=======================================================
                                  glmark2 Score: 1149
=======================================================
glmark2-es2 (Zink)
libEGL warning: DRI3 error: Could not get DRI3 device
libEGL warning: Ensure your X server supports DRI3 to get accelerated rendering
=======================================================
    glmark2 2023.01
=======================================================
    OpenGL Information
    GL_VENDOR:      Mesa
    GL_RENDERER:    zink Vulkan 1.3(Adreno (TM) 830 (QUALCOMM_PROPRIETARY))
    GL_VERSION:     OpenGL ES 3.2 Mesa 25.2.5
    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
    Surface Size:   800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 1558 FrameTime: 0.642 ms
[build] use-vbo=true: FPS: 1615 FrameTime: 0.619 ms
[texture] texture-filter=nearest: FPS: 1069 FrameTime: 0.936 ms
[texture] texture-filter=linear: FPS: 1161 FrameTime: 0.862 ms
[texture] texture-filter=mipmap: FPS: 1134 FrameTime: 0.882 ms
[shading] shading=gouraud: FPS: 1044 FrameTime: 0.958 ms
[shading] shading=blinn-phong-inf: FPS: 1072 FrameTime: 0.934 ms
[shading] shading=phong: FPS: 1014 FrameTime: 0.986 ms
[shading] shading=cel: FPS: 1258 FrameTime: 0.795 ms
[bump] bump-render=high-poly: FPS: 1742 FrameTime: 0.574 ms
[bump] bump-render=normals: FPS: 1977 FrameTime: 0.506 ms
[bump] bump-render=height: FPS: 1821 FrameTime: 0.549 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1295 FrameTime: 0.772 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 904 FrameTime: 1.106 ms
[pulsar] light=false:quads=5:texture=false: FPS: 1659 FrameTime: 0.603 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 588 FrameTime: 1.702 ms
[desktop] effect=shadow:windows=4: FPS: 1055 FrameTime: 0.948 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 442 FrameTime: 2.266 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 757 FrameTime: 1.322 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 520 FrameTime: 1.925 ms
[ideas] speed=duration: FPS: 619 FrameTime: 1.617 ms
[jellyfish] <default>: FPS: 1063 FrameTime: 0.941 ms
[terrain] <default>: FPS: 296 FrameTime: 3.385 ms
[shadow] <default>: FPS: 1014 FrameTime: 0.986 ms
[refract] <default>: FPS: 429 FrameTime: 2.333 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1504 FrameTime: 0.665 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1488 FrameTime: 0.672 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1490 FrameTime: 0.672 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 1473 FrameTime: 0.679 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1509 FrameTime: 0.663 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1563 FrameTime: 0.640 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1537 FrameTime: 0.651 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1471 FrameTime: 0.680 ms
=======================================================
                                  glmark2 Score: 1185
=======================================================

Mali-G78 MP20

vkmark
=======================================================
    vkmark 2025.01
=======================================================
    Vendor ID:      0x13B5
    Device ID:      0x92020000
    Device Name:    Mali-G78
    Driver Version: 226496512
    Device UUID:    a77a84dbf6f534ddb5b88a99395ff94b
=======================================================
[vertex] device-local=true: FPS: 1203 FrameTime: 0.831 ms
[vertex] device-local=false: FPS: 1190 FrameTime: 0.840 ms
[texture] anisotropy=0: FPS: 1153 FrameTime: 0.867 ms
[texture] anisotropy=16: FPS: 1135 FrameTime: 0.881 ms
[shading] shading=gouraud: FPS: 1008 FrameTime: 0.992 ms
[shading] shading=blinn-phong-inf: FPS: 957 FrameTime: 1.045 ms
[shading] shading=phong: FPS: 980 FrameTime: 1.020 ms
[shading] shading=cel: FPS: 872 FrameTime: 1.147 ms
[effect2d] kernel=edge: FPS: 917 FrameTime: 1.091 ms
[effect2d] kernel=blur: FPS: 810 FrameTime: 1.235 ms
[desktop] <default>: FPS: 947 FrameTime: 1.056 ms
[cube] <default>: FPS: 1180 FrameTime: 0.847 ms
[clear] <default>: FPS: 1267 FrameTime: 0.789 ms
=======================================================
                                   vkmark Score: 1047
=======================================================
glmark2 (Zink)
WARNING: Some incorrect rendering might occur because the selected Vulkan device (Mali-G78) doesn't support base Zink requirements: feats.features.fillModeNonSolid feats.features.shaderClipDistance
=======================================================
    glmark2 2023.01
=======================================================
    OpenGL Information
    GL_VENDOR:      Mesa
    GL_RENDERER:    zink Vulkan 1.4(Mali-G78 (ARM_PROPRIETARY))
    GL_VERSION:     3.2 (Compatibility Profile) Mesa 25.2.5
    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
    Surface Size:   800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 503 FrameTime: 1.988 ms
[build] use-vbo=true: FPS: 547 FrameTime: 1.830 ms
[texture] texture-filter=nearest: FPS: 564 FrameTime: 1.775 ms
[texture] texture-filter=linear: FPS: 552 FrameTime: 1.814 ms
[texture] texture-filter=mipmap: FPS: 580 FrameTime: 1.726 ms
[shading] shading=gouraud: FPS: 519 FrameTime: 1.928 ms
[shading] shading=blinn-phong-inf: FPS: 544 FrameTime: 1.841 ms
[shading] shading=phong: FPS: 516 FrameTime: 1.940 ms
[shading] shading=cel: FPS: 528 FrameTime: 1.897 ms
[bump] bump-render=high-poly: FPS: 404 FrameTime: 2.476 ms
[bump] bump-render=normals: FPS: 615 FrameTime: 1.627 ms
[bump] bump-render=height: FPS: 598 FrameTime: 1.674 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 531 FrameTime: 1.886 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 399 FrameTime: 2.508 ms
[pulsar] light=false:quads=5:texture=false: FPS: 585 FrameTime: 1.712 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 261 FrameTime: 3.846 ms
[desktop] effect=shadow:windows=4: FPS: 357 FrameTime: 2.805 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 312 FrameTime: 3.211 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 412 FrameTime: 2.432 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 297 FrameTime: 3.371 ms
[ideas] speed=duration: FPS: 314 FrameTime: 3.191 ms
[jellyfish] <default>: FPS: 450 FrameTime: 2.224 ms
[terrain] <default>: FPS: 164 FrameTime: 6.101 ms
[shadow] <default>: FPS: 419 FrameTime: 2.390 ms
[refract] <default>: FPS: 267 FrameTime: 3.755 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 375 FrameTime: 2.672 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 494 FrameTime: 2.026 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 500 FrameTime: 2.002 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 436 FrameTime: 2.297 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 393 FrameTime: 2.549 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 329 FrameTime: 3.045 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 351 FrameTime: 2.854 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 482 FrameTime: 2.076 ms
=======================================================
                                  glmark2 Score: 441
=======================================================
glmark2-es2 (Zink)
libEGL warning: DRI3 error: Could not get DRI3 device
libEGL warning: Ensure your X server supports DRI3 to get accelerated rendering
WARNING: Some incorrect rendering might occur because the selected Vulkan device (Mali-G78) doesn't support base Zink requirements: feats.features.fillModeNonSolid feats.features.shaderClipDistance
=======================================================
    glmark2 2023.01
=======================================================
    OpenGL Information
    GL_VENDOR:      Mesa
    GL_RENDERER:    zink Vulkan 1.4(Mali-G78 (ARM_PROPRIETARY))
    GL_VERSION:     OpenGL ES 3.1 Mesa 25.2.5
    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
    Surface Size:   800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 461 FrameTime: 2.173 ms
[build] use-vbo=true: FPS: 461 FrameTime: 2.170 ms
[texture] texture-filter=nearest: FPS: 447 FrameTime: 2.241 ms
[texture] texture-filter=linear: FPS: 491 FrameTime: 2.040 ms
[texture] texture-filter=mipmap: FPS: 461 FrameTime: 2.173 ms
[shading] shading=gouraud: FPS: 419 FrameTime: 2.387 ms
[shading] shading=blinn-phong-inf: FPS: 447 FrameTime: 2.240 ms
[shading] shading=phong: FPS: 426 FrameTime: 2.351 ms
[shading] shading=cel: FPS: 426 FrameTime: 2.352 ms
[bump] bump-render=high-poly: FPS: 373 FrameTime: 2.686 ms
[bump] bump-render=normals: FPS: 709 FrameTime: 1.411 ms
[bump] bump-render=height: FPS: 571 FrameTime: 1.754 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 576 FrameTime: 1.738 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 464 FrameTime: 2.156 ms
[pulsar] light=false:quads=5:texture=false: FPS: 575 FrameTime: 1.740 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 331 FrameTime: 3.026 ms
[desktop] effect=shadow:windows=4: FPS: 489 FrameTime: 2.047 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 349 FrameTime: 2.873 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 577 FrameTime: 1.734 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 312 FrameTime: 3.209 ms
[ideas] speed=duration: FPS: 431 FrameTime: 2.323 ms
[jellyfish] <default>: FPS: 508 FrameTime: 1.972 ms
[terrain] <default>: FPS: 178 FrameTime: 5.642 ms
[shadow] <default>: FPS: 471 FrameTime: 2.126 ms
[refract] <default>: FPS: 283 FrameTime: 3.544 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 603 FrameTime: 1.661 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 588 FrameTime: 1.703 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 585 FrameTime: 1.712 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 567 FrameTime: 1.765 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 568 FrameTime: 1.763 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 598 FrameTime: 1.674 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 611 FrameTime: 1.637 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 556 FrameTime: 1.801 ms
=======================================================
                                  glmark2 Score: 481
=======================================================

Adreno 730

vkmark
=======================================================
    vkmark 2025.01
=======================================================
    Vendor ID:      0x5143
    Device ID:      0x7030002
    Device Name:    Adreno (TM) 730
    Driver Version: 2150002783
    Device UUID:    39e31f0c435100000000020003070000
=======================================================
[vertex] device-local=true: FPS: 3929 FrameTime: 0.255 ms
[vertex] device-local=false: FPS: 4687 FrameTime: 0.213 ms
[texture] anisotropy=0: FPS: 4769 FrameTime: 0.210 ms
[texture] anisotropy=16: FPS: 2957 FrameTime: 0.338 ms
[shading] shading=gouraud: FPS: 2888 FrameTime: 0.346 ms
[shading] shading=blinn-phong-inf: FPS: 3041 FrameTime: 0.329 ms
[shading] shading=phong: FPS: 2950 FrameTime: 0.339 ms
[shading] shading=cel: FPS: 2814 FrameTime: 0.355 ms
[effect2d] kernel=edge: FPS: 2888 FrameTime: 0.346 ms
[effect2d] kernel=blur: FPS: 2844 FrameTime: 0.352 ms
[desktop] <default>: FPS: 2909 FrameTime: 0.344 ms
[cube] <default>: FPS: 2669 FrameTime: 0.375 ms
[clear] <default>: FPS: 2795 FrameTime: 0.358 ms
=======================================================
                                   vkmark Score: 3241
=======================================================
glmark2 (Zink)
glx: failed to create drisw screen
failed to load driver: zink
glx: failed to create drisw screen
failed to load driver: zink
glx: failed to create drisw screen
failed to load driver: zink
Error: glXChooseFBConfig() failed
Error: Error: Couldn't get GL visual config!
Error: main: Could not initialize canvas
glmark2-es2 (Zink)
libEGL warning: DRI3 error: Could not get DRI3 device
libEGL warning: Ensure your X server supports DRI3 to get accelerated rendering
libEGL warning: egl: failed to create dri2 screen
=======================================================
    glmark2 2023.01
=======================================================
    OpenGL Information
    GL_VENDOR:      Mesa
    GL_RENDERER:    llvmpipe (LLVM 21.1.3, 128 bits)
    GL_VERSION:     OpenGL ES 3.2 Mesa 25.2.5
    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=32 stencil=0 samples=0
    Surface Size:   800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 153 FrameTime: 6.570 ms
[build] use-vbo=true: FPS: 136 FrameTime: 7.402 ms
[texture] texture-filter=nearest: FPS: 120 FrameTime: 8.393 ms
[texture] texture-filter=linear: FPS: 120 FrameTime: 8.390 ms
[texture] texture-filter=mipmap: FPS: 109 FrameTime: 9.205 ms
[shading] shading=gouraud: FPS: 105 FrameTime: 9.561 ms
[shading] shading=blinn-phong-inf: FPS: 85 FrameTime: 11.814 ms
[shading] shading=phong: FPS: 80 FrameTime: 12.629 ms
[shading] shading=cel: FPS: 81 FrameTime: 12.491 ms
[bump] bump-render=high-poly: FPS: 47 FrameTime: 21.691 ms
[bump] bump-render=normals: FPS: 112 FrameTime: 8.968 ms
[bump] bump-render=height: FPS: 113 FrameTime: 8.918 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 61 FrameTime: 16.571 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 39 FrameTime: 26.147 ms
[pulsar] light=false:quads=5:texture=false: FPS: 98 FrameTime: 10.240 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 17 FrameTime: 58.825 ms
[desktop] effect=shadow:windows=4: FPS: 40 FrameTime: 25.233 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 59 FrameTime: 17.081 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 60 FrameTime: 16.944 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 60 FrameTime: 16.861 ms
[ideas] speed=duration: FPS: 72 FrameTime: 13.934 ms
[jellyfish] <default>: FPS: 35 FrameTime: 29.157 ms
[terrain] <default>: FPS: 2 FrameTime: 505.722 ms
[shadow] <default>: FPS: 71 FrameTime: 14.102 ms
[refract] <default>: FPS: 8 FrameTime: 132.474 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 94 FrameTime: 10.714 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 90 FrameTime: 11.115 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 102 FrameTime: 9.863 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 105 FrameTime: 9.535 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 84 FrameTime: 11.968 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 103 FrameTime: 9.714 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 98 FrameTime: 10.279 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 77 FrameTime: 13.101 ms
=======================================================
                                  glmark2 Score: 78
=======================================================

Moreover, it’s encouraging that blender4’s Vulkan backend (blender-4.5 --gpu-backend vulkan) runs very smoothly on the Adreno 830, though some rendering artifacts appeared. The performance is shown in the video below:

Screenrecorder-2025-11-10-17-10-38-526_1.mp4
`blender4` on the other two devices (using `vulkan-wrapper-android`)
# Xiaomi Pad 6 Pro (Adreno 730)
~ $ blender-4.5 --gpu-backend vulkan
WARN (gpu.vulkan): source/blender/gpu/vulkan/vk_backend.cc:282 is_supported: Device [Adreno (TM) 730] does not meet minimum requirements. Missing features are [multi viewport]
[Vulkan Loader] ERROR:          vkGetDeviceQueue: Invalid device [VUID-vkGetDeviceQueue-device-parameter]
Aborted                    blender-4.5 --gpu-backend vulkan

# Pixel 6 Pro (Mali-G78 MP20)
~ $ blender-4.5 --gpu-backend vulkan
WARN (gpu.vulkan): source/blender/gpu/vulkan/vk_backend.cc:282 is_supported: Device [Mali-G78] does not meet minimum requirements. Missing features are [multi draw indirect, multi viewport, shader clip distance]
[Vulkan Loader] ERROR:          vkGetDeviceQueue: Invalid device [VUID-vkGetDeviceQueue-device-parameter]
Aborted                    blender-4.5 --gpu-backend vulkan
~ $ blender-4.5 --gpu-backend opengl
WARNING: Some incorrect rendering might occur because the selected Vulkan device (Mali-G78) doesn't support base Zink requirements: feats.features.fillModeNonSolid feats.features.shaderClipDistance
libc++abi: terminating
Aborted                    blender-4.5 --gpu-backend opengl

@robertkirkman robertkirkman linked an issue Dec 6, 2025 that may be closed by this pull request
1 task
@nicman23

Copy link
Copy Markdown

hello could https://gitlab.freedesktop.org/nicman23/mesa/-/commit/d3eec9f0c4a45a96dc6ea7cb4f469e49cf64d3ed be added, it fixes a nullptr issue with enumeration on powervr gpus

lfdevs added a commit to lfdevs/termux-packages that referenced this pull request Feb 2, 2026
lfdevs added a commit to lfdevs/termux-packages that referenced this pull request Feb 2, 2026
lfdevs pushed a commit to lfdevs/termux-packages that referenced this pull request Feb 2, 2026
@Quackdoc

Quackdoc commented Feb 4, 2026

Copy link
Copy Markdown

I believe I'm also hitting that issue with my pixel 10 pro xl on the latest artifacts.

@lfdevs

lfdevs commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

I believe I'm also hitting that issue with my pixel 10 pro xl on the latest artifacts.

I've already applied nicman23's patch here: lfdevs#1 (comment)

You can try checking whether this issue has been fixed.

@Quackdoc

Quackdoc commented Feb 4, 2026

Copy link
Copy Markdown

It did indeed!

@JacobTDC

Copy link
Copy Markdown
Contributor

I would simply like to add that the current patch also works on the Google Pixel 8 Pro (Mali-G715) using Mesa 26.0.2 with no extra configuration. I haven't benchmarked it yet, though it seems to work quite well.

@sambow23

Copy link
Copy Markdown

Can someone share a new artifact? Current one has expired.

@TomJo2000

Copy link
Copy Markdown
Member

Rebased the branch against the latest state of the master branch, that'll cause the CI to rerun.

@robertkirkman

robertkirkman commented May 12, 2026

Copy link
Copy Markdown
Member

Rebased the branch against the latest state of the master branch, that'll cause the CI to rerun.

this is an old version, development continued here with the last update on February 2:

@TomJo2000

Copy link
Copy Markdown
Member

In that case I think we should probably close this PR and reopen a new one if/when the newer version is ready to be added to the Termux repos.

I'll leave that decision up to you though since I'm only involved in this PR in passing.

@robertkirkman

Copy link
Copy Markdown
Member

Unfortunately, the person who has been maintaining it decided that they prefer not to make a PR to the repository with it, since they are not confident that they will be able to keep doing it forever

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Package]: Vulkan WSI Layer for using system vulkan driver