From d57b7fe0636dcc4d020b92ffeb6419b7cffe20d1 Mon Sep 17 00:00:00 2001 From: Emmanuel Hansen <emmausssss@gmail.com> Date: Sat, 22 Jul 2023 17:53:29 +0000 Subject: [PATCH] fix adreno hooking --- .../app/src/main/AndroidManifest.xml | 1 + .../app/src/main/cpp/ryujinx.cpp | 12 +-------- .../main/java/org/ryujinx/android/GameHost.kt | 15 +++++++++-- .../java/org/ryujinx/android/NativeHelpers.kt | 2 +- .../org/ryujinx/android/views/SettingViews.kt | 25 +++++++++++-------- 5 files changed, 31 insertions(+), 24 deletions(-) diff --git a/src/RyujinxAndroid/app/src/main/AndroidManifest.xml b/src/RyujinxAndroid/app/src/main/AndroidManifest.xml index b33362363..5dc772de1 100644 --- a/src/RyujinxAndroid/app/src/main/AndroidManifest.xml +++ b/src/RyujinxAndroid/app/src/main/AndroidManifest.xml @@ -23,6 +23,7 @@ android:largeHeap="true" android:appCategory="game" android:theme="@style/Theme.RyujinxAndroid" + android:extractNativeLibs="true" tools:targetApi="31"> <activity android:name=".MainActivity" diff --git a/src/RyujinxAndroid/app/src/main/cpp/ryujinx.cpp b/src/RyujinxAndroid/app/src/main/cpp/ryujinx.cpp index 33ca59517..c1607a625 100644 --- a/src/RyujinxAndroid/app/src/main/cpp/ryujinx.cpp +++ b/src/RyujinxAndroid/app/src/main/cpp/ryujinx.cpp @@ -194,20 +194,12 @@ void onFrameEnd(double time) { extern "C" JNIEXPORT jlong JNICALL Java_org_ryujinx_android_NativeHelpers_loadDriver(JNIEnv *env, jobject thiz, - jstring driver_path, jstring native_lib_path, jstring private_apps_path, - jstring public_apps_path, jstring driver_name) { - auto driverPath = getStringPointer(env, driver_path); auto libPath = getStringPointer(env, native_lib_path); auto privateAppsPath = getStringPointer(env, private_apps_path); auto driverName = getStringPointer(env, driver_name); - auto publicPath = getStringPointer(env, public_apps_path); - - std::string redirectPath = publicPath; - - redirectPath += "gpu/vk_file_redirect/"; auto handle = adrenotools_open_libvulkan( RTLD_NOW, @@ -216,15 +208,13 @@ Java_org_ryujinx_android_NativeHelpers_loadDriver(JNIEnv *env, jobject thiz, libPath, privateAppsPath, driverName, - nullptr,//redirectPath.c_str(), + nullptr, nullptr ); - delete driverPath; delete libPath; delete privateAppsPath; delete driverName; - delete publicPath; return (jlong)handle; } \ No newline at end of file diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/GameHost.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/GameHost.kt index ba481aa89..b5559d163 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/GameHost.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/GameHost.kt @@ -95,9 +95,20 @@ class GameHost(context: Context?, val controller: GameController, val mainViewMo if(driverViewModel.selected.isNotEmpty()) { var privatePath = mainViewModel.activity.filesDir; var privateDriverPath = privatePath.absolutePath + "/driver/" + val pD = File(privateDriverPath) + if(pD.exists()) + pD.deleteRecursively() + + pD.mkdirs() + var driver = File(driverViewModel.selected) - driver.copyTo(File(privateDriverPath + driver.name), true) - driverHandle = NativeHelpers().loadDriver(driverViewModel.selected, mainViewModel.activity.applicationInfo.nativeLibraryDir!!, privateDriverPath, mainViewModel.activity.getExternalFilesDir(null)!!.absolutePath, driver.name) + var parent = driver.parentFile + for (file in parent.walkTopDown()){ + if(file.absolutePath == parent.absolutePath) + continue + file.copyTo(File(privateDriverPath + file.name), true) + } + driverHandle = NativeHelpers().loadDriver(mainViewModel.activity.applicationInfo.nativeLibraryDir!! + "/", privateDriverPath, driver.name) } success = _nativeRyujinx.graphicsInitializeRenderer( diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/NativeHelpers.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/NativeHelpers.kt index 0dd4e41fc..4b52c2862 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/NativeHelpers.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/NativeHelpers.kt @@ -16,5 +16,5 @@ class NativeHelpers { external fun attachCurrentThread() : Unit external fun detachCurrentThread() : Unit - external fun loadDriver(driverPath:String, nativeLibPath:String, privateAppsPath:String, publicAppsPath:String, driverName:String) : Long + external fun loadDriver(nativeLibPath:String, privateAppsPath:String, driverName:String) : Long } \ No newline at end of file diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/SettingViews.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/SettingViews.kt index 3ba7a3271..8316361f9 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/SettingViews.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/SettingViews.kt @@ -380,18 +380,23 @@ class SettingViews { driverViewModel.selected = driver.driverPath }) - Column { + Column(modifier = Modifier.clickable { + selectedDriver.value = + ind + isChanged.value = + true + driverViewModel.selected = + driver.driverPath + }) { Text(text = driver.libraryName, modifier = Modifier - .fillMaxWidth() - .clickable { - selectedDriver.value = - ind - isChanged.value = - true - driverViewModel.selected = - driver.driverPath - }) + .fillMaxWidth()) + Text(text = driver.driverVersion, + modifier = Modifier + .fillMaxWidth()) + Text(text = driver.description, + modifier = Modifier + .fillMaxWidth()) } }