From 3c4030665d04f09c0a2eaf930270587ee4c1a383 Mon Sep 17 00:00:00 2001 From: a-ghorbani Date: Tue, 21 Apr 2026 14:34:36 +0200 Subject: [PATCH] feat(android): enable Adreno large buffer for A7X/A8X GPUs Set LM_GGML_OPENCL_ADRENO_USE_LARGE_BUFFER=1 before SoLoader.init so the llama.rn OpenCL backend enables cl_qcom_large_buffer on supported Adreno devices. Non-Adreno devices and drivers without the extension no-op. Closes #657. Upstream: https://github.com/ggml-org/llama.cpp/pull/20997 --- .../app/src/main/java/com/pocketpalai/MainApplication.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/android/app/src/main/java/com/pocketpalai/MainApplication.kt b/android/app/src/main/java/com/pocketpalai/MainApplication.kt index 28a7d6429..2231987a1 100644 --- a/android/app/src/main/java/com/pocketpalai/MainApplication.kt +++ b/android/app/src/main/java/com/pocketpalai/MainApplication.kt @@ -1,6 +1,7 @@ package com.pocketpal import android.app.Application +import android.system.Os import com.facebook.react.PackageList import com.facebook.react.ReactApplication import com.facebook.react.ReactHost @@ -43,6 +44,12 @@ class MainApplication : Application(), ReactApplication { override fun onCreate() { super.onCreate() + // Enable Adreno large buffer support on Qualcomm A7X/A8X GPUs. + // The OpenCL backend in llama.rn self-gates on GPU family and the + // cl_qcom_large_buffer extension — this is a no-op on non-Adreno devices. + // Must be set before SoLoader.init so the native library picks it up. + // See: https://github.com/ggml-org/llama.cpp/pull/20997 + Os.setenv("LM_GGML_OPENCL_ADRENO_USE_LARGE_BUFFER", "1", true) SoLoader.init(this, OpenSourceMergedSoMapping) if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { // If you opted-in for the New Architecture, we load the native entry point for this app.