forked from Mirror/Ryujinx
More Vi/NvFlinger/NvDrv stubs, allow paths starting with //, do not allow paths that don't start with at least a /, increase map region size
This commit is contained in:
parent
4038e63de1
commit
4f177c9ee7
6 changed files with 50 additions and 4 deletions
|
@ -7,7 +7,7 @@ namespace Ryujinx.Core.OsHle
|
||||||
public const long AddrSpaceStart = 0x08000000;
|
public const long AddrSpaceStart = 0x08000000;
|
||||||
|
|
||||||
public const long MapRegionAddress = 0x10000000;
|
public const long MapRegionAddress = 0x10000000;
|
||||||
public const long MapRegionSize = 0x10000000;
|
public const long MapRegionSize = 0x20000000;
|
||||||
|
|
||||||
public const long MainStackSize = 0x100000;
|
public const long MainStackSize = 0x100000;
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ namespace Ryujinx.Core.OsHle.IpcServices.NvServices
|
||||||
{ ("/dev/nvmap", 0x0101), NvMapIocCreate },
|
{ ("/dev/nvmap", 0x0101), NvMapIocCreate },
|
||||||
{ ("/dev/nvmap", 0x0103), NvMapIocFromId },
|
{ ("/dev/nvmap", 0x0103), NvMapIocFromId },
|
||||||
{ ("/dev/nvmap", 0x0104), NvMapIocAlloc },
|
{ ("/dev/nvmap", 0x0104), NvMapIocAlloc },
|
||||||
|
{ ("/dev/nvmap", 0x0105), NvMapIocFree },
|
||||||
{ ("/dev/nvmap", 0x0109), NvMapIocParam },
|
{ ("/dev/nvmap", 0x0109), NvMapIocParam },
|
||||||
{ ("/dev/nvmap", 0x010e), NvMapIocGetId },
|
{ ("/dev/nvmap", 0x010e), NvMapIocGetId },
|
||||||
};
|
};
|
||||||
|
@ -585,6 +586,25 @@ namespace Ryujinx.Core.OsHle.IpcServices.NvServices
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static long NvMapIocFree(ServiceCtx Context)
|
||||||
|
{
|
||||||
|
long Position = Context.Request.GetSendBuffPtr();
|
||||||
|
|
||||||
|
MemReader Reader = new MemReader(Context.Memory, Position);
|
||||||
|
MemWriter Writer = new MemWriter(Context.Memory, Position + 8);
|
||||||
|
|
||||||
|
int Handle = Reader.ReadInt32();
|
||||||
|
int Padding = Reader.ReadInt32();
|
||||||
|
|
||||||
|
HNvMap NvMap = Context.Ns.Os.Handles.GetData<HNvMap>(Handle);
|
||||||
|
|
||||||
|
Writer.WriteInt64(0);
|
||||||
|
Writer.WriteInt32(NvMap.Size);
|
||||||
|
Writer.WriteInt32(0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
private static long NvMapIocParam(ServiceCtx Context)
|
private static long NvMapIocParam(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
long Position = Context.Request.GetSendBuffPtr();
|
long Position = Context.Request.GetSendBuffPtr();
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace Ryujinx.Core.OsHle.IpcServices.Vi
|
||||||
{ 1010, OpenDisplay },
|
{ 1010, OpenDisplay },
|
||||||
{ 1020, CloseDisplay },
|
{ 1020, CloseDisplay },
|
||||||
{ 2020, OpenLayer },
|
{ 2020, OpenLayer },
|
||||||
|
{ 2021, CloseLayer },
|
||||||
{ 2030, CreateStrayLayer },
|
{ 2030, CreateStrayLayer },
|
||||||
{ 2101, SetLayerScalingMode },
|
{ 2101, SetLayerScalingMode },
|
||||||
{ 5202, GetDisplayVSyncEvent }
|
{ 5202, GetDisplayVSyncEvent }
|
||||||
|
@ -96,6 +97,11 @@ namespace Ryujinx.Core.OsHle.IpcServices.Vi
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long CloseLayer(ServiceCtx Context)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
public long CreateStrayLayer(ServiceCtx Context)
|
public long CreateStrayLayer(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
long LayerFlags = Context.RequestData.ReadInt64();
|
long LayerFlags = Context.RequestData.ReadInt64();
|
||||||
|
|
|
@ -13,8 +13,9 @@ namespace Ryujinx.Core.OsHle.IpcServices.Vi
|
||||||
{
|
{
|
||||||
m_Commands = new Dictionary<int, ServiceProcessRequest>()
|
m_Commands = new Dictionary<int, ServiceProcessRequest>()
|
||||||
{
|
{
|
||||||
{ 2010, CreateManagedLayer },
|
{ 2010, CreateManagedLayer },
|
||||||
{ 6000, AddToLayerStack }
|
{ 2011, DestroyManagedLayer },
|
||||||
|
{ 6000, AddToLayerStack }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +26,11 @@ namespace Ryujinx.Core.OsHle.IpcServices.Vi
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long DestroyManagedLayer(ServiceCtx Context)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
public static long AddToLayerStack(ServiceCtx Context)
|
public static long AddToLayerStack(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -70,6 +70,7 @@ namespace Ryujinx.Core.OsHle.IpcServices.Android
|
||||||
{ ("android.gui.IGraphicBufferProducer", 0x8), GbpCancelBuffer },
|
{ ("android.gui.IGraphicBufferProducer", 0x8), GbpCancelBuffer },
|
||||||
{ ("android.gui.IGraphicBufferProducer", 0x9), GbpQuery },
|
{ ("android.gui.IGraphicBufferProducer", 0x9), GbpQuery },
|
||||||
{ ("android.gui.IGraphicBufferProducer", 0xa), GbpConnect },
|
{ ("android.gui.IGraphicBufferProducer", 0xa), GbpConnect },
|
||||||
|
{ ("android.gui.IGraphicBufferProducer", 0xb), GbpDisconnect },
|
||||||
{ ("android.gui.IGraphicBufferProducer", 0xe), GbpPreallocBuffer }
|
{ ("android.gui.IGraphicBufferProducer", 0xe), GbpPreallocBuffer }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -212,6 +213,11 @@ namespace Ryujinx.Core.OsHle.IpcServices.Android
|
||||||
return MakeReplyParcel(Context, 1280, 720, 0, 0, 0);
|
return MakeReplyParcel(Context, 1280, 720, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private long GbpDisconnect(ServiceCtx Context, BinaryReader ParcelReader)
|
||||||
|
{
|
||||||
|
return MakeReplyParcel(Context, 0);
|
||||||
|
}
|
||||||
|
|
||||||
private long GbpPreallocBuffer(ServiceCtx Context, BinaryReader ParcelReader)
|
private long GbpPreallocBuffer(ServiceCtx Context, BinaryReader ParcelReader)
|
||||||
{
|
{
|
||||||
int Slot = ParcelReader.ReadInt32();
|
int Slot = ParcelReader.ReadInt32();
|
||||||
|
|
|
@ -18,10 +18,18 @@ namespace Ryujinx.Core
|
||||||
|
|
||||||
public string GetFullPath(string BasePath, string FileName)
|
public string GetFullPath(string BasePath, string FileName)
|
||||||
{
|
{
|
||||||
if (FileName.StartsWith('/'))
|
if (FileName.StartsWith("//"))
|
||||||
|
{
|
||||||
|
FileName = FileName.Substring(2);
|
||||||
|
}
|
||||||
|
else if (FileName.StartsWith('/'))
|
||||||
{
|
{
|
||||||
FileName = FileName.Substring(1);
|
FileName = FileName.Substring(1);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
string FullPath = Path.GetFullPath(Path.Combine(BasePath, FileName));
|
string FullPath = Path.GetFullPath(Path.Combine(BasePath, FileName));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue