forked from MeloNX/MeloNX
fix adreno hooking
This commit is contained in:
parent
f8c1e745ca
commit
7d7e1ce639
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "ryuijnx.h"
|
||||
#include "pthread.h"
|
||||
#include <chrono>
|
||||
#include <csignal>
|
||||
|
||||
jmethodID _updateFrameTime;
|
||||
JNIEnv* _rendererEnv = nullptr;
|
||||
@ -217,4 +218,9 @@ Java_org_ryujinx_android_NativeHelpers_loadDriver(JNIEnv *env, jobject thiz,
|
||||
delete driverName;
|
||||
|
||||
return (jlong)handle;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
void debug_break(int code){
|
||||
int r = 0;
|
||||
}
|
@ -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(
|
||||
|
Loading…
x
Reference in New Issue
Block a user