Initial fixes for last release of libnx
For now, the framebuffer aren't okay but it will not crash/
This commit is contained in:
parent
cf147f1e49
commit
e016da0402
3 changed files with 22 additions and 13 deletions
|
@ -52,7 +52,7 @@ namespace Ryujinx.HLE.HOS.Services.Vi
|
|||
|
||||
public long GetSystemDisplayService(ServiceCtx context)
|
||||
{
|
||||
MakeObject(context, new ISystemDisplayService());
|
||||
MakeObject(context, new ISystemDisplayService(this));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -10,13 +10,14 @@ namespace Ryujinx.HLE.HOS.Services.Vi
|
|||
|
||||
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => _commands;
|
||||
|
||||
public ISystemDisplayService()
|
||||
public ISystemDisplayService(IApplicationDisplayService applicationDisplayService)
|
||||
{
|
||||
_commands = new Dictionary<int, ServiceProcessRequest>
|
||||
{
|
||||
{ 2205, SetLayerZ },
|
||||
{ 2207, SetLayerVisibility },
|
||||
{ 3200, GetDisplayMode }
|
||||
{ 2205, SetLayerZ },
|
||||
{ 2207, SetLayerVisibility },
|
||||
{ 2312, applicationDisplayService.CreateStrayLayer },
|
||||
{ 3200, GetDisplayMode }
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -169,20 +169,23 @@ namespace Ryujinx.HLE.HOS.Services.Android
|
|||
|
||||
//TODO: Errors.
|
||||
int slot = parcelReader.ReadInt32();
|
||||
int unknown4 = parcelReader.ReadInt32();
|
||||
int unknown8 = parcelReader.ReadInt32();
|
||||
int unknownC = parcelReader.ReadInt32();
|
||||
int timestamp = parcelReader.ReadInt32();
|
||||
int isAutoTimestamp = parcelReader.ReadInt32();
|
||||
|
||||
int flatternedObjSize = parcelReader.ReadInt32();
|
||||
int fdCount = parcelReader.ReadInt32();
|
||||
|
||||
long timestamp = parcelReader.ReadInt64();
|
||||
int isAutoTimestamp = parcelReader.ReadInt32();
|
||||
|
||||
int cropTop = parcelReader.ReadInt32();
|
||||
int cropLeft = parcelReader.ReadInt32();
|
||||
int cropRight = parcelReader.ReadInt32();
|
||||
int cropBottom = parcelReader.ReadInt32();
|
||||
|
||||
int scalingMode = parcelReader.ReadInt32();
|
||||
int transform = parcelReader.ReadInt32();
|
||||
int stickyTransform = parcelReader.ReadInt32();
|
||||
int unknown34 = parcelReader.ReadInt32();
|
||||
int unknown38 = parcelReader.ReadInt32();
|
||||
int swapInterval = parcelReader.ReadInt32();
|
||||
int isFenceValid = parcelReader.ReadInt32();
|
||||
int fence0Id = parcelReader.ReadInt32();
|
||||
int fence0Value = parcelReader.ReadInt32();
|
||||
|
@ -244,9 +247,9 @@ namespace Ryujinx.HLE.HOS.Services.Android
|
|||
{
|
||||
int slot = parcelReader.ReadInt32();
|
||||
|
||||
int bufferCount = parcelReader.ReadInt32();
|
||||
bool hasInput = parcelReader.ReadInt32() == 1;
|
||||
|
||||
if (bufferCount > 0)
|
||||
if (hasInput)
|
||||
{
|
||||
long bufferSize = parcelReader.ReadInt64();
|
||||
|
||||
|
@ -290,6 +293,11 @@ namespace Ryujinx.HLE.HOS.Services.Android
|
|||
int fbHeight = _bufferQueue[slot].Data.Height;
|
||||
|
||||
int nvMapHandle = BitConverter.ToInt32(_bufferQueue[slot].Data.RawData, 0x4c);
|
||||
if (nvMapHandle == 0)
|
||||
{
|
||||
nvMapHandle = BitConverter.ToInt32(_bufferQueue[slot].Data.RawData, 0x4);
|
||||
}
|
||||
|
||||
int bufferOffset = BitConverter.ToInt32(_bufferQueue[slot].Data.RawData, 0x50);
|
||||
|
||||
NvMapHandle map = NvMapIoctl.GetNvMap(context, nvMapHandle);
|
||||
|
|
Loading…
Add table
Reference in a new issue