fix adreno hooking

This commit is contained in:
Emmanuel Hansen 2023-07-23 13:02:40 +00:00
parent f8c1e745ca
commit 7d7e1ce639
4 changed files with 34 additions and 16 deletions

View File

@ -42,6 +42,9 @@ namespace LibRyujinx
[DllImport("libryujinxjni")]
internal extern static void setRenderingThread();
[DllImport("libryujinxjni")]
internal extern static void debug_break(int code);
[DllImport("libryujinxjni")]
internal extern static void onFrameEnd(double time);

View File

@ -3,6 +3,7 @@ using Silk.NET.Core.Contexts;
using Silk.NET.Vulkan;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
@ -33,7 +34,7 @@ namespace LibRyujinx
{
_loadedLibrary = driver;
if(_loadedLibrary != IntPtr.Zero)
if (_loadedLibrary != IntPtr.Zero)
{
var instanceGetProc = NativeLibrary.GetExport(_loadedLibrary, "vkGetInstanceProcAddr");
var deviceProc = NativeLibrary.GetExport(_loadedLibrary, "vkGetDeviceProcAddr");
@ -43,7 +44,7 @@ namespace LibRyujinx
}
}
public Vk GetApi()
public unsafe Vk GetApi()
{
if (_loadedLibrary == IntPtr.Zero)
@ -57,6 +58,8 @@ namespace LibRyujinx
x =>
{
var xPtr = Marshal.StringToHGlobalAnsi(x);
byte* xp = (byte*)xPtr;
LibRyujinx.debug_break(0);
try
{
nint ptr = default;

View File

@ -19,6 +19,7 @@
#include "ryuijnx.h"
#include "pthread.h"
#include <chrono>
#include <csignal>
jmethodID _updateFrameTime;
JNIEnv* _rendererEnv = nullptr;
@ -218,3 +219,8 @@ Java_org_ryujinx_android_NativeHelpers_loadDriver(JNIEnv *env, jobject thiz,
return (jlong)handle;
}
extern "C"
void debug_break(int code){
int r = 0;
}

View File

@ -88,27 +88,33 @@ class GameHost(context: Context?, val controller: GameController, val mainViewMo
nativeInterop!!.SurfaceHandle = window
var driverViewModel = VulkanDriverViewModel(mainViewModel.activity);
driverViewModel.getAvailableDrivers()
var drivers = driverViewModel.getAvailableDrivers()
var driverHandle = 0L;
if(driverViewModel.selected.isNotEmpty()) {
var privatePath = mainViewModel.activity.filesDir;
var privateDriverPath = privatePath.absolutePath + "/driver/"
val pD = File(privateDriverPath)
if(pD.exists())
pD.deleteRecursively()
var metaData = drivers.find { it.driverPath == driverViewModel.selected }
pD.mkdirs()
metaData?.apply {
var privatePath = mainViewModel.activity.filesDir;
var privateDriverPath = privatePath.canonicalPath + "/driver/"
val pD = File(privateDriverPath)
if(pD.exists())
pD.deleteRecursively()
var driver = File(driverViewModel.selected)
var parent = driver.parentFile
for (file in parent.walkTopDown()){
if(file.absolutePath == parent.absolutePath)
continue
file.copyTo(File(privateDriverPath + file.name), true)
pD.mkdirs()
var driver = File(driverViewModel.selected)
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, this.libraryName)
}
driverHandle = NativeHelpers().loadDriver(mainViewModel.activity.applicationInfo.nativeLibraryDir!! + "/", privateDriverPath, driver.name)
}
success = _nativeRyujinx.graphicsInitializeRenderer(