Add detail of ZbcSetTableArguments (#810)
* Add detail of ZbcSetTableArguments This is a missing part of the #800 PR that cause an assert to be triggered in debug mode. Also, remove Fence in SurfaceFlinger as it's a duplicate of NvFence. * Fix critical issue in size checking of ioctl oops
This commit is contained in:
parent
5116951222
commit
88593bf872
4 changed files with 48 additions and 19 deletions
|
@ -91,7 +91,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv
|
||||||
|
|
||||||
if (isRead && isWrite)
|
if (isRead && isWrite)
|
||||||
{
|
{
|
||||||
if (outputDataPosition < inputDataSize)
|
if (outputDataSize < inputDataSize)
|
||||||
{
|
{
|
||||||
arguments = null;
|
arguments = null;
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,49 @@
|
||||||
using System.Runtime.InteropServices;
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu.Types
|
namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu.Types
|
||||||
{
|
{
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
struct ZbcColorArray
|
||||||
|
{
|
||||||
|
private uint element0;
|
||||||
|
private uint element1;
|
||||||
|
private uint element2;
|
||||||
|
private uint element3;
|
||||||
|
|
||||||
|
public uint this[int index]
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
return element0;
|
||||||
|
}
|
||||||
|
else if (index == 1)
|
||||||
|
{
|
||||||
|
return element1;
|
||||||
|
}
|
||||||
|
else if (index == 2)
|
||||||
|
{
|
||||||
|
return element2;
|
||||||
|
}
|
||||||
|
else if (index == 2)
|
||||||
|
{
|
||||||
|
return element3;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new IndexOutOfRangeException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential)]
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
struct ZbcSetTableArguments
|
struct ZbcSetTableArguments
|
||||||
{
|
{
|
||||||
// TODO
|
public ZbcColorArray ColorDs;
|
||||||
|
public ZbcColorArray ColorL2;
|
||||||
|
public uint Depth;
|
||||||
|
public uint Format;
|
||||||
|
public uint Type;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
|
||||||
{
|
|
||||||
[StructLayout(LayoutKind.Sequential, Size = 0x8)]
|
|
||||||
struct Fence
|
|
||||||
{
|
|
||||||
public int Id;
|
|
||||||
public int Value;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,4 +1,5 @@
|
||||||
using System.Runtime.InteropServices;
|
using Ryujinx.HLE.HOS.Services.Nv.Types;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
||||||
{
|
{
|
||||||
|
@ -9,15 +10,15 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
||||||
public int FenceCount;
|
public int FenceCount;
|
||||||
|
|
||||||
[FieldOffset(0x4)]
|
[FieldOffset(0x4)]
|
||||||
public Fence Fence0;
|
public NvFence Fence0;
|
||||||
|
|
||||||
[FieldOffset(0xC)]
|
[FieldOffset(0xC)]
|
||||||
public Fence Fence1;
|
public NvFence Fence1;
|
||||||
|
|
||||||
[FieldOffset(0x14)]
|
[FieldOffset(0x14)]
|
||||||
public Fence Fence2;
|
public NvFence Fence2;
|
||||||
|
|
||||||
[FieldOffset(0x1C)]
|
[FieldOffset(0x1C)]
|
||||||
public Fence Fence3;
|
public NvFence Fence3;
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in a new issue